await如何并行执行?
问题:先统一生成promise实例后,为哈就能同步执行了
function getName () {
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('tony')
}, 2000)
})
}
function getId () {
return new Promise((resolve, reject)=>{
setTimeout(()=>{
resolve('123')
}, 3000)
})
}
(async ()=>{
let name = await getName(); // 需要2s
let id = await getId(); // 等待getName()执行后才能执行,执行需要3s
alert(`name:${name}, id:${id}`); // 大概5秒
})();
(async ()=>{
// 先 生成promise实例,下面两个行代码同步执行,无需等待
let namePromise = getName();
let idPromise = getId();
// 为啥下面就能同步执行了
let name = await namePromise;
let id = await idPromise;
alert(`name:${name}, id:${id}`); // 大概3秒
})()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为下面两句话异步操作已经开始执行,所以之后的await无法将二者同步。
new Promise的时候异步操作就会开始执行,所以是否有同步等待,要看上一个await在new Promise之前还是之后,如果上一个await在new Promise之前,那么new Promise内部的异步操作就会在上一个异步操作后才会执行,如果是在之后,那么异步操作早就启动执行。