为了账号安全,请及时绑定邮箱和手机立即绑定

Async/Await 如何实现各自执行

Async/Await 如何实现各自执行

犯罪嫌疑人X 2018-12-17 09:47:58
function getTimeOut1() {    return new Promise((resolve, reject) => {         setTimeout(() => {             resolve('===5000ms===');         }, 5000);     }); }function getTimeOut2() {    return new Promise((resolve, reject) => {         setTimeout(() => {             resolve('===2000ms===');         }, 2000);     }); }如何用async/await实现这种(分头执行)的效果:getTimeOut1().then(res => {    console.log(res); }); getTimeOut2().then(res => {    console.log(res); });普通的await会等a的返回结果出来再执行b ---> 8000ms+const a = await getTimeOut1();const b = await getTimeOut2();用Promise.all([...p])的形式,虽然是并行操作,但会等最慢的一次执行完才会返回结果。---> 5000ms+所以没有想明白如何用async/await实现常规的并行回调。
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

async function logInOrder(urls) {  // 并发读取远程URL
  const textPromises = urls.map(async url => {    const response = await fetch(url);    return response.text();
  });  // 按次序输出
  for (const textPromise of textPromises) {    console.log(await textPromise);
  }
}

上面代码中,虽然map方法的参数是async函数,但它是并发执行的,因为只有async函数内部是继发执行,外部不受影响。后面的for..of循环内部使用了await,因此实现了按顺序输出。

希望这个答案可以帮到你,谢谢采纳意见!


查看完整回答
反对 回复 2018-12-17
  • 1 回答
  • 0 关注
  • 626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号