0

このコードを考えると:

var something = function(callback) {

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

「コールバック」が 1 か所で呼び出されるように、よりクリーンな方法で書き直すにはどうすればよいでしょうか。どうにかしてこの全体をラップしてそれを行うことができると思います-私はそれを見ましたが、完全に正しくすることはできません.

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();
  }
}

私の推論は、もしdisの場合falseでもそれを渡すことができcallback、引数をまったく渡さないのとほとんど同じになるということです。

于 2013-05-29T03:39:14.530 に答える