首页 > 解决方案 > Async/Await 正在等待另一个?

问题描述

我有异步功能:

const getUser = async (query) => {
  const user = await Users.findOne(query);
  const feed = await Feeds.findOne({ user: user._id });
  console.log("Do this befor await above");

  return { user, feed };
};

这是否意味着 JS 在每条等待行上都有延迟,等待承诺结果并且console.log("Do this befor await above");永远不会在await上述两个之前运行?是否有可能最后一个等待比第一个更快返回,我得到了这个:

return {undefined, feed}?

那么,异步调用后的代码不会阻塞吗?

getUser();
console.log("Code below is not blocking...");

标签: javascriptasync-await

解决方案


假设findOne实际上返回了一个承诺:

是不是意味着 JS 在每条 await 行都有延迟,等待 promise 结果

是的

和 console.log("在上面的等待之前执行此操作"); 从来没有在上面两个 await 之前运行?

是的

是否有可能最后一个等待比第一个更快返回,我得到了这个:

Feeds.findOne在 resolve 返回的 Promise 之前,甚至不会调用No Users.findOne.。


推荐阅读