【发布时间】:2016-01-04 01:39:38
【问题描述】:
我正在使用 Promise 库 Bluebird,我目前遇到的问题是函数内部的所有内容都运行良好,但是当我尝试返回一个值时,该函数反而返回 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。为什么我会遇到这种行为?
【问题讨论】:
-
foo 根本不返回任何东西
-
我对 Bluebird 不熟悉,但我使用过原生 JS 承诺。话虽如此......匿名函数
function(results)返回书。它上面的两个匿名函数function(val)什么都不返回。foo,到最后什么都没回。 -
您需要返回所有嵌套函数。 createGroupMembers、createMessages 等
-
@JaromandaX 我怎样才能让它返回任何东西,为什么它不返回?
标签: javascript node.js promise bluebird