我的程序中发生了一些非常奇怪的事情。我用时间戳consol.logged了一堆废话,试图弄清楚到底发生了什么。基本上,我的程序会随机停止获取数据。我已经确保有一个新的数据流,但我必须刷新整个页面或重新保存程序,以便在挂起时重新启动所有内容。最重要的是,没有错误或标志告诉我它停止的原因。我试图隔离问题,但这很可能与异步功能有关。这是代码……
function App() {
const data = async() => {
try {
console.log('try block initiated')
const apiResponse = await fetch(ipAddress)
console.log(apiResponse);
console.log("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB")
const responseText = await apiResponse.text();
console.log(responseText)
console.log("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC")
if (loading === true){
setLoading(false);
}
console.log("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD")
return responseText;
} catch (error) {
console.log('catch initiated')
setError(true);
}
};
console.log("AAAAAAAAAAAAAAAAAAAAAAA")
try{
console.log("EEEEEEEEEEEEEEEEEEEEEEEEEEE")
data().then(response=>setMoisture(response));
console.log("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
} catch(error){
console.log('gotcha')
setError(true);
}
let value = moisture;
console.log(value);
count += 1;
console.log(count);
return(
<div className="App">
<WeatherCard moisture={value}/>
</div>
);
}下面是控制台在停止获取新数据之前的样子……

发布于 2020-11-13 09:15:25
这是一个可能的解决方案。在经历了许多令人头疼的问题和异步功能的研究之后。我想这会奏效的。我打算让它运行一整晚,看看它是否会被捕获,但到目前为止,这是解决方案……
const data = async() => {
try {
const apiResponse = await fetch(ipAddress)
const responseText = await apiResponse.text();
console.log("CCCCCCCCCCCCCCCCCCC");
console.log(responseText);
if (loading === true){
setLoading(false);
}
data().then(response=>setMoisture(response));
return responseText;
} catch (error) {
console.log("EEEEERRRRRRRRRROOOOOOOOOOORRRRRRRRRRRR")
setError(true);
}
};
console.log("AAAAAAAAAAAAAAAAAAAA");
if (moisture === "initialState"){
data().then(response=>setMoisture(response));
}else{
console.log("QQQQQQQQQQQQQQQQQQQQQQQQ")
}这是我改变的.我创建了一个名为"initialSate“的初始状态,如果变量就是这个值,它就会运行异步函数。然后,我再也不会在ASYNS本身之外调用此ASYNC。相反,我在从函数返回一个值之前调用它自己。这是因为我的程序在运行异步函数的同时也在运行。然而,程序本身是顺序的,而异步也是自己顺序的。它们并不是连续的。因此,现在只在异步函数完成其第一次运行后才会再次调用异步函数。同时,我的程序的其余部分也在运行。之前,我认为它被捕获了,因为我的程序试图在第一次完成之前调用异步函数。这纯粹是一个猜测,因为我没有办法证明这一点,但它是有意义的。如果这通宵跑失败了。我将从解决方案中提取此内容。否则,我认为这将会起作用。祈祷吧!
https://stackoverflow.com/questions/64723796
复制相似问题