0
我有多個promise
'我想要一個接一個地運行,而且我不確定我想要返回承諾,因爲它變得非常混亂!Node.js異步並行不能如何工作?
所以我決定使用async
庫並實現parallel
方法。現在我注意到,我所有的承諾都沒有運行一個,而是他們正在做的承諾是假設todo(每次運行+完成)。
我注意到所有的console.log都在所有的promise完成之前就運行了。
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
任何理由的承諾得到解決(。然後)。
如果你想爲了運行這些功能,那麼async.parallel不是API你需要,你應該嘗試async.waterfall –
啊hhhh好吧@StephenCrosby謝謝 – James111
有了承諾,你不應該使用'async.js'。只需用'then'鏈接它們。 – Bergi