2016-11-09 2 views
-1

Ich bin verwirrt wie cb(); funktioniert? Was tut es?Wie funktioniert dieser Rückruf in diesem Code?

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

Was genau, verstehst du das nicht? – deceze

+3

'cb' ist ein cal lback-Funktion. 'cb()' hier wird es aufgerufen – intekhab

+0

cb (err) übergibt Fehler an den Rückruf, aber was passiert, wenn cb(); Anruf? – GhostRuler

Antwort

2

Angenommen, ich verstehe Ihre Frage, was sind Sie wahrscheinlich nicht ist zu verstehen, dass cb nicht in Ihrer Probe definiert ist - es ist ein Hinweis auf etwas, das als Parameter an beforeCreate übergeben wird.

Sie haben Ihren Code Angenommen oben Sie würden dann, irgendwann, beforeCreate nennen und in sie ein Verfahren (Rückruf) übergeben, die im Inneren verwendet werden - wie diese

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 */ 
    } 
) 

So ..., dass anonym dort Funktion (nach dem/Rückruf/Kommentar ist der Rückruf, den Sie vorbei in (als Referenz) zu beforeCreate und was * Sie damit machen wird iN beforeCreate (oben in Ihrem Beispiel definiert).

+0

Danke @Genia S. – GhostRuler