等待顺序执行(不用)
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'