valeur de retour à l'intérieur de la promesse de la chaîne n'est pas appelé
Je suis en utilisant la promesse de la bibliothèque de Bluebird et je suis actuellement en cours d'exécution dans la question que tout à l'intérieur de la fonction fonctionne bien, mais lorsque je tente de retourner une valeur, la fonction au lieu de cela renvoie undefined
.
C'est la promesse de la chaîne:
function foo() {
createGroupMembers(parsedChat).then(function(val) {
var members = val;
createMessages(parsedChat, maxPages).then(function(val) {
var messages = val;
Promise.all([ createFrontCover(subject, firstdateOfMessages, lastDateOfMessages, isPreview), createStats(parsedChat), createBackCover(parsedChat)])
.then(function (results) {
var front = results[0];
var stats = results[1];
var backcover = results[2];
var book = head + front + stats + members + messages + backcover;
console.log('pages in this book: ', pages);
console.log(book); //logs perfect values.
return book;
});
});
});
}
Le problème est simple: lors de l'appel foo()
, c'est la valeur devient undefined
au lieu de livre. Pourquoi suis-je confronté à ce comportement?
toto ne retourne rien du tout
Je ne suis pas familier avec Bluebird, mais j'ai utilisé natif JS promesses. Cela dit... la fonction anonyme
Vous devez retourner toutes vos fonctions imbriquées. createGroupMembers, createMessages, etc.
Comment puis-je la faire revenir n'importe quoi, et pourquoi n'est-il pas de retour?
Je ne suis pas familier avec Bluebird, mais j'ai utilisé natif JS promesses. Cela dit... la fonction anonyme
function(results)
retourne livre. Les deux fonctions anonymes function(val)
ci-dessus, il renvoie rien. foo
, en fin de compte, ne retourne rien.Vous devez retourner toutes vos fonctions imbriquées. createGroupMembers, createMessages, etc.
Comment puis-je la faire revenir n'importe quoi, et pourquoi n'est-il pas de retour?
OriginalL'auteur bdv | 2015-10-07
Vous devez vous connecter pour publier un commentaire.
Maintenant foo sera de retour d'une promesse qui peut résoudre à la valeur de livre
Pour être honnête,
foo
pourrait être réécrit, mais c'est une autre question complètementPour info: vous pourriez faire quelque chose comme cela pour les foo
Foiré autour avec l'ordre de la seconde (était votre seule) Promesse.tous les, et ajoute la précédente Promettent des résultats pour la finale conatenation des pièces d'aussi simple qu'une
.join
- cette façon de faire permettra également de propager les erreurs correctement, de sorte que votre utilisation de toto peut êtreOriginalL'auteur Jaromanda X