了解节点中的回调

时间:2018-02-14 15:25:45

标签: javascript node.js callback

我是nodejs的初学者。我想了解一些代码。基本上它会创建一个事件。

模型/ event.js

EventSchema.static("createEvent",function(event,user,callback){
var That = this;

async.waterfall([
    function(callback){
        var time = moment(event.releaseTime).tz(event.releaseTimezone).utc().toDate();
        event.rTime= time;
        callback();
    },

    function(callback){
        var model = new That(event);
        That.validateEvent(model,user,function(err){
            if(err){
                callback({message:err});
                return;
            }else{
                callback(null,model);
                return;
            }
        });
    },

    function(model,callback){
        model.save(function(err,doc){
            if(err){
                callback({message:"Error saving event",err:err});
            }else{
                callback(null,doc);
            }
        });
    },

    function(savedEvent,callback){ /*Some further code is written here*/}

我已经了解了前两个回调函数,但未能理解第三个&第四个。

在第二次回调中它说

callback(null,model);

然后下一个回调以

开头

function(model,callback){

在第三次回调中它说

callback(null,doc);

然后下一个回调以

开头

function(savedEvent,callback){

我不明白这一点。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:2)

callback(null,model);

调用函数(存储在名为callback的变量中)。将两个参数(值null和变量model的值)传递给它。

function(model,callback){

定义了一个函数。它希望收到两个论点。第一个参数将存储在名为model的变量中。第二个参数将存储在名为callback的变量中。

对函数和函数定义的另一个调用以相同的方式工作。

答案 1 :(得分:1)

对于瀑布,第二个和后续函数的第一个参数是/是前一个回调的返回值。根据{{​​3}}:

waterfall([
  function(callback){
    callback(null, 'one', 'two');
  },
  function(arg1, arg2, callback){
    callback(null, 'three');
  },
  function(arg1, callback){
    // arg1 now equals 'three' 
    callback(null, 'done');
  }
], function (err, result) {
  // result now equals 'done' 
});