javascript - JS ES6 promise 链接

标签 javascript promise chaining es6-promise

我正在尝试学习如何使用 promises,但在理解链接时遇到了问题。我假设使用这段代码,两个 promise 都会运行。然后,当我调用 test.then() 时,它应该知道测试已解析并将解析数据传递给 then()。

一旦该函数完成,它就会进入下一个 then(),用 test2 promise 重复相同的过程。

但是,我只能让它打印出第一个 promise 结果,而不是第二个。知道这里缺少什么吗?

var test = new Promise(function(resolve, reject){
    resolve('done1');
});

var test2 = new Promise(function(resolve, reject){
    resolve('done2');
});

test
.then(function(data) {
    console.log(data);
})
.then(test2)
.then(function(data) {
    console.log(data);
});

最佳答案

您的第一个 .then 调用返回 undefined,而任何后续 .then 都期待返回的 promise 。因此,您需要将代码更改为:

var test = new Promise(function(resolve, reject){
    resolve('done1');
});

var test2 = new Promise(function(resolve, reject){
    resolve('done2');
});

test
.then(function(data) {
    console.log(data);
    return test2;
})

.then(resultOfTest2 => doSomething)
.then(function(data) {
console.log(data);
});

关于javascript - JS ES6 promise 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711084/

相关文章:

javascript - Highcharts:如何将数据从 JSON 加载到 xAxis.categories 和 series.data?

javascript - Socket.io 聊天服务器

javascript - 在 WebdriverIO 上执行 TestRunner 失败

node.js - promise 中的 if-else 流程( Bluebird )

javascript - 为什么 appendChild() 覆盖 createElement() 如果它被链接在它的末尾?

angular - Protractor 元素链接对我不起作用

javascript - 页面加载完成后ajax页面刷新

javascript - 如何在 Node.js 模块中嵌入 Promise?

javascript - 我的 Promise.all() 实现有什么问题?

javascript - 链接自定义 javascript 函数