javascript - 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...");
解决方案
假设findOne
实际上返回了一个承诺:
是不是意味着 JS 在每条 await 行都有延迟,等待 promise 结果
是的
和 console.log("在上面的等待之前执行此操作"); 从来没有在上面两个 await 之前运行?
是的
是否有可能最后一个等待比第一个更快返回,我得到了这个:
Feeds.findOne
在 resolve 返回的 Promise 之前,甚至不会调用No Users.findOne
.。
推荐阅读
- c# - 是否可以在 C# 中快速进行未经检查的结构转换?
- swift - Tableview 在一行上创建五行?
- angular - Angular5:模板选择
- java - java Spring @EnableResourceServer 和 @EnableWebSecurity
- python - 特定网页的 Scrapy shell
- c# - C# Accord.NET 元素加法过时了吗?
- c# - XAML 原语中的绑定
- tensorflow - 在同一个端口上加载两个不同的文件夹
- c# - 如何使用 Combobox 加载列表框
- rest - 当正文中的 ID 与路径中的 ID 不匹配时,正确的 HTTP 状态代码?