鉴于此代码:
var something = function(callback) {
if(condition) {
Mongoose.findOne(id, function(err, doc) {
if(doc) {
callback(doc);
} else {
callback();
}
});
} else {
callback();
}
}
我如何以更干净的方式重写它,以便在一个地方调用'回调'。我认为我可以用某种方式包装整个事情并做到这一点 - 我已经看到了它但却无法完全正确。
答案 0 :(得分:1)
由于您说调用回调有复杂的步骤,请尝试以下
var something = function(callback) {
var callCallback = function(doc){
//do all other things you want to do to call the callback
callback(doc);
};
if(condition) {
Mongoose.findOne(id, function(err, doc) {
if(doc) {
callCallback(doc);
} else {
callCallback();
}
});
} else {
callCallback();
}
}
答案 1 :(得分:0)
var something = function (callback) {
var f = function (e, d) { callback(d) };
if (condition) {
Mongoose.findOne(id, f);
} else {
f();
}
}
我的理由是,如果d
为false
,那么我们仍然可以将其传递给callback
,它几乎与传递任何参数一样。