我仍在努力解决 Node.js 的嵌套回调结构。我看过 async、co 等方法,但它们似乎没有帮助。
关于如何编码的最佳实践是什么,例如
var db = MongoClient.connect(url, callback1 () {
if (auth) }
db.authenticate(user, pswd, callback2 () {
--- should continue with db.collection.find (authenticated)
)
--- should continue with db.collection.find (non-authenticated)
}
所以问题是:我应该如何编码这个序列才能执行 db.connect 或 db.authenticate 之后的数据库调用(并且两个回调都完成)?我能想到的唯一方法是在一个单独的函数中进行以下数据库调用,并在两个回调例程中调用该函数。不太优雅......
最佳答案
如果您对如何在回调之前放置可选条件感到困惑,那么您可以使用异步执行以下操作:
var async = require('async');
var db = MongoClient.connect(url, () => {
async.series([
(callback) => {
//Branching
if(auth) {
// Do conditional execution
db.authenticate(user, pswd, () => {
callback();
});
} else {
// Skip to the next step
callback();
}
},
(callback) => {
// Whatever happened in the previous function, we get here and can call the db
db.collection.find();
}
]);
});
关于javascript - Node.js 如何进行条件回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397002/