JavaScript等待异步执行完成

2022-07-28 11:46:50

等待顺序执行(不用)

constasyncUppercase=item=>newPromise(resolve=>setTimeout(()=>resolve(item.toUpperCase()),
            Math.floor(Math.random()*1000)))constuppercaseItems=async()=>{const items=['a','b','c'];for(itemof items){const uppercaseItem=awaitasyncUppercase(item);
        console.log(uppercaseItem)}
    console.log('异步执行完成')}uppercaseItems();

等待不用顺序执行(用这个)
数组方法不能直接使用,要使用promise.all ,回调函数

constaysncUppercase=item=>newPromise(resolve=>setTimeout(()=>resolve(item.toUpperCase()),
            Math.floor(Math.random()*1000)));constuppercaseItems=()=>{const items=['a','b','c'];return Promise.all(
        items.map(asyncitem=>{const uppercaseItem=awaitaysncUppercase(item);
            console.log(uppercaseItem)})).then(()=>{
        console.log('all执行完成')})}uppercaseItems();

数组方法,使用回调将导致代码的其余部分执行,并且无法等待异步操作。不能用

constasyncUppercase=item=>newPromise(resolve=>setTimeout(()=>resolve(item.toUpperCase()),
      Math.floor(Math.random()*1000)));constuppercaseItems=async()=>{const items=['a','b','c'];await items.forEach(asyncitem=>{const uppercaseItem=awaitasyncUppercase(item);
    console.log(uppercaseItem);});

  console.log('Items processed');};uppercaseItems();// LOGS: ''Items processed', 'B', 'A', 'C'
  • 作者:CongJiYong
  • 原文链接:https://blog.csdn.net/CongJiYong/article/details/124703882
    更新时间:2022-07-28 11:46:50