给定以下代码:
var something = function(callback) {
if(condition) {
Mongoose.findOne(id, function(err, doc) {
if(doc) {
callback(doc);
} else {
callback();
}
});
} else {
callback();
}
}
我如何用一种更干净的方式重写它,这样'callback'只在一个地方被调用。我假设我可以把这整个东西包装起来——我看到过,但不能完全正确。
既然您说调用回调有复杂的步骤,请尝试下面的
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();
}
}
var something = function (callback) {
var f = function (e, d) { callback(d) };
if (condition) {
Mongoose.findOne(id, f);
} else {
f();
}
}
我的理由是,如果d
是false
,那么我们仍然可以将其传递给callback
,这几乎等同于不传递任何参数。