首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异步等待不按预期使用react

异步等待不按预期使用react
EN

Stack Overflow用户
提问于 2022-08-29 20:20:18
回答 2查看 193关注 0票数 0

我在useEffect钩子中调用一个异步函数,如下所示。

代码语言:javascript
运行
复制
const ab = async () => {
    console.log("start API");
    await callAPI();
    console.log("end API");
};

useEffect(() => {
    ab();
    console.log("calling");
}, []);

作为输出,它将首先打印start API,然后打印调用,最后打印end API。但是,作为打印顺序,我需要的是启动API、end API和调用。这也是我使用异步等待的原因。但这不像预期的那样有效。有办法解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2022-08-29 20:22:50

这就是使用await的要点--执行暂停直到callAPI完成。

要实现您想要的顺序,不要使用await,只需让代码异步运行。这样,同步代码(console.log('calling'))将在不等待异步代码(callAPI())完成的情况下运行。

编辑:然而,取决于您的用例,另一个答案可能更有意义。

票数 1
EN

Stack Overflow用户

发布于 2022-08-30 03:16:27

要使async/await工作,您必须await一个异步函数。因此,请使用以下代码。

代码语言:javascript
运行
复制
  useEffect(() => {
    let helper = async () => {
      await ab(); // write await here
      console.log('calling');
    };
    helper();
  }, []);

现在的输出是:

代码语言:javascript
运行
复制
Start API
End API
calling
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73534259

复制
相关文章

相似问题

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