这个回调如何在这段代码中运行?

时间:2016-11-09 09:32:39

标签: javascript node.js

我很困惑cb();工作中?它做了什么?

 beforeCreate: function(user, cb) {
    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(user.password, salt, function(err, hash) {
            if (err) {
                console.log(err);
                cb(err);
            } else {
                user.password = hash;
                cb();
            }
        });
    });
}

1 个答案:

答案 0 :(得分:2)

假设我理解了您的问题,您可能不理解的是cb未在您的示例中定义 - 它是对将作为传递的内容传达的内容的引用参数beforeCreate

假设你有上面的代码,那么你可以在某个时候调用beforeCreate并传入一个将在里面使用的方法(回调) - 就像这样

beforeCreate({name:"Joe"}, /* user */
  function(err){ /* callback */
    if(err) return console.log("beforeCreate callback has been called with error" + err); /* check if there is error and return from function */
    console.log("beforeCreate called successful") /* otherwise called succesfull */
  }
)

那么...那里的匿名函数(在/ 回调 / comment之后是你将{作为参考)传递给beforeCreate的回调以及什么你*做它的定义是IN beforeCreate(在你的例子上面)。