callback() ou retour de rappel()
Il est possible que je ne comprends pas le Nœud de la boucle d'événement assez bien.
Dire que j'ai une fonction foo
qui contient une fonction d'asynchrone async_func
. Dois-je
//1
function foo(callback) {
//stuff here
async_func(function() {
//do something
callback();
});
//this eventually get executed
}
ou
//2
function foo(callback) {
//stuff here
async_func(function() {
//do something
return callback();
});
//never executed
}
Vous devez vous connecter pour publier un commentaire.
En fait, dans votre échantillon 2,
//never executed
sera exécutée à chaque fois. Il est de retour de la fonction de rappel, pas de l'emballage de la fonction.Parfois, l'appelant fait s'attend à une certaine valeur de retour et le comportement peuvent changer en fonction de cela. Une autre raison courante de voir un retour de rappel() est juste une façon claire de court-circuiter la fonction que vous utilisez. Par exemple.
Même si la valeur de retour n'est pas utilisé, il est de retour pour s'assurer que l'exécution n'a pas continuer au-delà de l'erreur conditionnelle. Vous pourriez tout aussi bien l'écrire de cette façon, qui a le même effet.
_.find
est trompeuse, et je vous suggère de le retirer._.find
est synchrone et ne prend pas de rappel. Il faut une fonction d'itérateur, il utilise pendant le traitement, mais encore, puis renvoie un résultat de manière synchrone. Cet exemple sera juste embrouiller les gens.