我想创建一个函数“ processArray(array)”,当调用该函数时,它将在数组中的项目之后逐个console.log,每个日志之间的延迟为1秒。
因此,我已经使用以下代码(A)做到了这一点:
function delay() {
return new Promise(resolve => setTimeout(resolve, 1000));
}
async function delayedLog(item) {
await delay();
console.log(item);
}
async function processArray(array) {
for (let i = 0; i < array.length ; i++){
await delayedLog(array[i]);
}
}
processArray([1, 2, 3]);
但是此代码(B)不起作用:
function delay() {
return new Promise(resolve => setTimeout(resolve, 1000));
}
async function delayedLog(item) {
await delay();
console.log(item);
}
function processArray(array) {
for (let i = 0; i < array.length ; i++){
(async () => {
await delayedLog(array[i]);
})();
}
}
processArray([1, 2, 3]);
为什么B代码不起作用?唯一的不同是,我在for循环内使用了匿名异步函数,而不是声明processArray函数异步。