【发布时间】:2018-12-17 15:29:02
【问题描述】:
我正在学习 Node JS 中的 Promise。我遇到了一个我想同步的代码(出于好奇)。
function test1(){
return new Promise(async function(resolve,reject){
await promise1();
await promise2();
await promise3();
console.log('last');
resolve(true);
})
}
async function promise1(){
return new Promise(async function(resolve,reject){
console.log('promise1');
await setTimeout(myFunc, 1500, resolve);
console.log("111");
});
}
function myFunc(resolve) {
console.log(`arg was => resolve`);
resolve(true);
}
function promise2(){
return new Promise(function(resolve,reject){
console.log('promise2');
resolve(true);
});
}
function promise3(){
return new Promise(function(resolve,reject){
console.log('promise3');
resolve(true);
});
}
function callTest1(){
for(i=0;i<4;i++){
test1();
}
}
callTest1();
我想要这样的输出:
promise1
arg was => resolve
111
promise2
promise3
last
promise1
arg was => resolve
111
promise2
promise3
last
promise1
arg was => resolve
111
promise2
promise3
last
promise1
arg was => resolve
111
promise2
promise3
last
我希望我的代码等待 setTimeOut 之后才运行其他函数。我知道,在节点 js 中,我们有异步的概念但不知何故我希望这段代码是同步的。
【问题讨论】:
-
永远不要将
async function作为回调传递给new Promise!
标签: node.js promise async-await