Node.js 异步等待控制流分解 setTimeout 中的调用函数
Node.js Async await control flow break down call function in setTimeout
我有两个异步流示例。
第一个正常。
function delayPromise(item){
return new Promise(resolve=>setTimeout(resolve, 1000));
}
async function delay(item){
await delayPromise(item);
console.log(item);
}
async function test(){
var arr = [1,2, 3,4, 5, 6];
for(elem of arr){
console.log('starting ' + elem);
await delay(elem);
}
console.log('done');
}
test();
上面的代码给出了我预期的结果,如下所示。
starting 1
1
starting 2
2
starting 3
3
starting 4
4
starting 5
5
starting 6
6
done
第二个是更改了 delayPromise 函数。我在 setTimeout 回调中写了匿名函数,如下所示。
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve, 1000));
}
结果如下。
starting 1
这些代码有什么不同?为什么我在第二个代码处得不到预期的结果?
您需要执行解析:
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve(), 1000));
}
特别注意:解析()
我有两个异步流示例。
第一个正常。
function delayPromise(item){
return new Promise(resolve=>setTimeout(resolve, 1000));
}
async function delay(item){
await delayPromise(item);
console.log(item);
}
async function test(){
var arr = [1,2, 3,4, 5, 6];
for(elem of arr){
console.log('starting ' + elem);
await delay(elem);
}
console.log('done');
}
test();
上面的代码给出了我预期的结果,如下所示。
starting 1
1
starting 2
2
starting 3
3
starting 4
4
starting 5
5
starting 6
6
done
第二个是更改了 delayPromise 函数。我在 setTimeout 回调中写了匿名函数,如下所示。
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve, 1000));
}
结果如下。
starting 1
这些代码有什么不同?为什么我在第二个代码处得不到预期的结果?
您需要执行解析:
function delayPromise(item){
return new Promise(resolve=>setTimeout(()=>resolve(), 1000));
}
特别注意:解析()