我'm using the promise library Bluebird and I'目前遇到的问题是函数内的所有内容运行都很好,但是当我尝试返回一个值时,该函数返回 undefined
.
这是承诺链:
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;
});
});
});
}
问题很简单:当调用 foo()
时,它的值变为 undefined
而不是book . 为什么我会遇到这种行为?
1 回答
现在,foo将返回一个可以解析为book值的promise
说实话,
foo
可以改写,但这完全是一个不同的问题仅供参考:你可以为foo做这样的事情
在第二个(是你唯一的)Promise.all中加入了顺序,并在其中添加了先前的Promise结果,使部件的最终连接像_852542一样简单 - 这样做也会正确地传播任何错误,所以你对foo的使用可以