0

鉴于此代码:

var something = function(callback) {

  if(condition) {
     Mongoose.findOne(id, function(err, doc) {
       if(doc) {
         callback(doc);
       } else {
         callback();
       }
    });
  } else {
    callback();
  }
}

我将如何以更简洁的方式重写它,以便在一个地方调用“回调”。我想我可以以某种方式包装整个事情并做到这一点 - 我已经看到它但不能完全正确。

4

2 回答 2

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();
    }
}
于 2013-05-29T03:37:34.937 回答
0
var something = function (callback) {
  var f = function (e, d) { callback(d) };

  if (condition) {
     Mongoose.findOne(id, f);
  } else {
    f();
  }
}

我的理由是,如果d是,false那么我们仍然可以将它传递给它,callback这几乎与根本不传递任何参数一样。

于 2013-05-29T03:39:14.530 回答