我有多个promise
'我想要一个接一个地运行,而且我不确定我是否想要回复承诺,因为它变得非常混乱!
所以我决定使用async
库并实现parallel
方法。现在我注意到我的所有承诺都没有一个接一个地运行,相反,他们正在做承诺假设todo(运行+完成任何时候)。
我注意到所有的console.log都在所有承诺完成之前运行。
async.parallel([
(cb) => {
console.log ("hi")
grabMeData (Args)
.then ( (data) => {
// The promise is done and now I want to goto the next functio
cb();
}).catch(()=>console.log('err'));
},
(callback) => {
// The above promise is done, and I'm the callback
Query.checkUserExists()
.then ( () => {
if (Query.error) {
console.log (Query.error); // Determine error here
return; // Return to client if needed
}
callback();
});
},
() => {
// The above promise is done and I'm the callback!
// Originally wanted to be async
if (Query.accAlreadyCreated) {
this.NewUserModel.user_id = Query.user_id;
this.generateToken();
} else {
console.log ("account not created");
}
console.log ('xx')
}
], () =>{
console.log ("finished async parallel")
});
我的回调正在运行的任何原因before
承诺得到解决(.then)。
答案 0 :(得分:2)
async.js
是多余的,你的代码可以简化为:
console.log('hi')
grabMeData(Args)
.catch(e => console.error(e))
.then(() => Query.checkUserExists())
.then(() => {
if (Query.accAlreadyCreated) {
this.NewUserModel.user_id = Query.user_id
return this.generateToken()
}
console.log ("account not created")
})
.then(() => console.log ('xx') )