J'ai une fonction simplifiée qui ressemble à ceci :
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
En gros, je veux qu'il appelle myApi.exec
et renvoie la réponse qui est donnée dans le lambda de rappel. Cependant, le code ci-dessus ne fonctionne pas et renvoie simplement immédiatement.
Pour une tentative très artisanale, j'ai essayé ce qui suit qui n'a pas fonctionné, mais au moins vous avez l'idée de ce que j'essaie de faire :
function(query) {
var r;
myApi.exec('SomeCommand', function(response) {
r = response;
});
while (!r) {}
return r;
}
En gros, quelle est la meilleure façon de procéder pour un nœud.js/événement ? Je veux que ma fonction attende que le callback soit appelé, puis retourne la valeur qui lui a été passée.
4 votes
Ou est-ce que je ne m'y prends pas du tout de la bonne manière, et devrais-je appeler un autre callback, plutôt que de renvoyer une réponse ?
0 votes
Ce site est à mon avis la meilleure explication du SO pourquoi la boucle occupée ne fonctionne pas.
0 votes
N'essayez pas d'attendre. Appelez simplement la fonction suivante (dépendante de la callback) à la fin de la callback elle-même.