Fetch请求接口执行顺序问题 同步异步

新手上路,请多包涵


求助:
这是两个fetch方法请求接口
我在TodoServices.listTodoUnlessIdea()里边有请求了一个TodoServices.getPlan(item.Id),但是他先走完TodoServices.listTodoUnlessIdea()之后才走的TodoServices.getPlan(item.Id)

我的预期结果是控制台中temp在最下,应该是三个,但是现在只有两个

阅读 3.1k
1 个回答
新手上路,请多包涵

异步请求回调会在请求成功以后才会执行。显然会在同步代码以后执行;
这里推荐使用 async await 来解决,更直观。
当然首先要通过 babel 解决该语法的兼容性问题;

;(async() => {
  const temp = []
  for (const item of res) {
    if (item.PlanId) {
      const name = await TodoServices.getPlan(item.id)
      // temp.push(...)
    } else {
      // temp.push(...)
    }
  }
  console.log('temp', temp)
})()

以上仅为基础示例代码,还有优化空间。比如通过 Promise.all 同时发起异步请求,不过先掌握基本方法已经很不错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题