forEach中异步处理的几种解决办法
arr = [1,2,3]
arr2 = []
async function bbb() {
/*一、 for of 可行*/
// for (let item of arr) {
// console.log('item', item)
// let result = await time(item)
// console.log('result', result)
// arr2.push(result)
// }
/*二、 forEach 不影响外部结果也能拿到结果,但是不影响外部*/
// arr.forEach(async (item)=>{
// let result = await time(item)
// arr2.push(result)
// })
// 三、Promise.all 同样可行
let a = arr.map(async (item)=>{
let result = await time(item)
return arr2.push(result)
})
Promise.all(a).then((res)=>{
console.log("res",res)
})
console.log(arr2)
}
bbb()
async function time(item){
let aaa = await new Promise((res, rej) => {
setTimeout(() => {
item += 'a'
// console.log('Promise', item)
res(item)
}, 1000)
})
// console.log(aaa, item)
return item
}