You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中async/await未按预期工作,求助异步执行顺序问题

问题分析与解决方案

嘿,这问题我熟!你遇到的核心问题是:你的first()函数没有返回一个Promise对象,而await关键字只有在等待Promise的时候才会真正暂停执行、等待异步操作完成。

为什么当前代码不生效?

你现在的first()只是执行了一个setTimeout,但没有返回任何异步容器。当你用await this.first()时,因为first()没返回Promise,await会把它当成一个已经“完成”的同步值,直接跳过等待,立刻执行后面的this.second()——这就是为什么second()会直接跑出来,完全不等那1秒延迟。

修复方案:让first()返回Promise

只需要把first()改成返回一个Promise,把setTimeout的逻辑包在里面,当超时完成后调用resolve(),告诉await异步操作已经结束:

first() {
  // 返回一个Promise
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log('I am First CALL afer 1 second');
      resolve(); // 标记异步操作完成
    }, 1000);
  });
}

second() { console.log("SEcond methof is called"); }

async getMoviesFromApi() {
  try {
    await this.first() ; // 现在会等待1秒,直到first()的Promise resolve
    this.second() ; // 这时候才会执行
  } catch (error) {
    console.error(error);
  }
}

验证效果

现在调用getMoviesFromApi(),你会看到:

  1. 等待1秒后,打印I am First CALL afer 1 second
  2. 紧接着打印SEcond methof is called

完全符合你预期的顺序啦!

内容的提问来源于stack exchange,提问作者Raam Meena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:38:29