I'm using the promise library Bluebird and I'm currently running into the issue that everything inside the function runs great, but when I try to return a value, the function instead returns undefined
.
This is the promise chain:
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;
});
});
});
}
The problem is simple: when calling foo()
, it's value becomes undefined
instead of book. Why am I experiencing this behaviour?
Now foo will return a promise which can resolve to the value of book
To be honest,
foo
could be rewritten, but that's a different question altogetherFYI: you could do something like this for foo
Messed around with the order in the second (was your only) Promise.all, and added the previous Promise results in it to make the final conatenation of parts as simple as a
.join
- doing it this way will also propagate any erros correctly, so your usage of foo can be