Comment faire pour retourner la valeur de nodejs fonction de rappel?
mturk_ops.block = function(callback){
mongodb.collection(collectionName, function(err, collection){
collection.distinct('workerId',function(err,result){
var result1 = [];
console.log(result.length);
for(var i=0; i< result.length;i++){
console.log(result[i]);
result1[result[i]] = collection.count({
'workerId':result[i],
"judgementStat" : "majority"
},function(err, count){
// console.log(count);
// globals.push(count);
return count ;
//console.log( worker + ' majority : ' + count);
});
}
console.log(result1);
});
});
}
Ici, je suis en train d'imprimer 'result1", mais elle a toujours l'impression de tableau avec une valeur non définie. 'result1' est un tableau qui est affecté hors de la portée de la fonction de rappel.
Vous ne pouvez pas retourner. Il doit être passé de l'avant avec un nouveau rappel.
OriginalL'auteur vcxz | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas retourner une valeur à partir d'un rappel asynchrone. Le rappel est généralement exécuté peu de temps après la fonction dans laquelle elle a été déclarée est retourné (qui continuera d'exécution après l'appel de méthode asynchrone). Il n'est nulle part pour une fonction de rappel pour revenir à. Voici un exemple simple:
Si vous devez compter sur le résultat d'une méthode asynchrone, vous aurez besoin de déplacer le code qui nécessite dans la fonction de rappel.
oui, vous pouvez, mais la fonction externe (
doSomething
) faire (return 20
) avant votre intérieur asynchrone fonction de prise d'effet (paramètre x à 30).alors, comment pensez-vous utiliser quoi que ce soit calculée à l'intérieur de la fonction ( doSomethingAsynchronous ) à l'extérieur de celui-ci?
OriginalL'auteur James Allardice