首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从服务器随机取数停止取数

从服务器随机取数停止取数
EN

Stack Overflow用户
提问于 2020-11-07 10:14:28
回答 1查看 135关注 0票数 0

我的程序中发生了一些非常奇怪的事情。我用时间戳consol.logged了一堆废话,试图弄清楚到底发生了什么。基本上,我的程序会随机停止获取数据。我已经确保有一个新的数据流,但我必须刷新整个页面或重新保存程序,以便在挂起时重新启动所有内容。最重要的是,没有错误或标志告诉我它停止的原因。我试图隔离问题,但这很可能与异步功能有关。这是代码……

代码语言:javascript
复制
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>
  );
}

下面是控制台在停止获取新数据之前的样子……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 09:15:25

这是一个可能的解决方案。在经历了许多令人头疼的问题和异步功能的研究之后。我想这会奏效的。我打算让它运行一整晚,看看它是否会被捕获,但到目前为止,这是解决方案……

代码语言:javascript
复制
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。相反,我在从函数返回一个值之前调用它自己。这是因为我的程序在运行异步函数的同时也在运行。然而,程序本身是顺序的,而异步也是自己顺序的。它们并不是连续的。因此,现在只在异步函数完成其第一次运行后才会再次调用异步函数。同时,我的程序的其余部分也在运行。之前,我认为它被捕获了,因为我的程序试图在第一次完成之前调用异步函数。这纯粹是一个猜测,因为我没有办法证明这一点,但它是有意义的。如果这通宵跑失败了。我将从解决方案中提取此内容。否则,我认为这将会起作用。祈祷吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64723796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档