在看webpack bootstrap代码的时候,发现
new Promise
传的函数是会立即执行的
function test() {
let arr = [1, 2, 3, 4];
let tasks = arr.map(item => {
console.log(`task ${item}`)
let p = new Promise(async function(resolve) {
console.log(`pre ${item}`)
await delay(item); // line 2
console.log(`outside ${item}`); // line 3
resolve(item);
});
console.log(`after promise ${item}`)
return p
});
Promise.all(tasks).then(() => console.log("done")); // line 4
}
复制代码
打印结果:
-
立即出现的部分:
task 1 pre 1 after promise 1 task 2 pre 2 after promise 2 task 3 pre 3 after promise 3 task 4 pre 4 after promise 4 复制代码
-
延后5秒出现的部分:
outside 1 outside 2 outside 3 outside 4 复制代码
发现是自己2了,此文灌水了~