JS ES6 承诺链 [英] JS ES6 Promise Chaining

查看:16
本文介绍了JS ES6 承诺链的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习如何使用 Promise,但我无法理解链接.我假设使用此代码,两个 Promise 都会运行.然后当我调用 test.then() 时,它应该知道测试已经解析并将解析数据传递给 then().

I'm trying to learn how to use promises, but am having trouble comprehending the chaining. I assume that with this code, both promises will run. Then when I call test.then() it should know that test has resolved and pass the resolve data to then().

一旦该函数完成,它就会进入下一个 then(),对 test2 承诺重复相同的过程.

Once that function finishes, it goes onto the next then(), repeating the same process with the test2 promise.

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

However, I can only get it to print out the first promise results, not the second. Any ideas what is missing here?

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 期待返回的承诺.因此,您需要将代码更改为:

Your first .then call is returning undefined, whereas any subsequent .then is expecting a returned promise. So you'd need to change your code to:

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);
});

这篇关于JS ES6 承诺链的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆