考虑以下代码:

var d1=$.Deferred();
var d2=$.Deferred();
d1.resolve();
d2.reject();
var p1=d1.promise();
var p2=d2.promise();
p1.then(function () {
    console.log('promiseOne resolved');
    return p2;
}).then(function () {
    console.log('promiseTwo resolved');
    }, function() {
    console.log('promiseTwo rejected'); });


我在哪里得到结果:

promiseOne resolved
promiseTwo rejected


我的查询是第二个.then方法的调用方对象有哪个承诺?更具体;如果我们有:

var x=p1.then(function () {
    console.log('promiseOne resolved');
    return p2;
})


就是那个x!=p2,因为.then返回一个新的jQuery.Deferred().promise()对象。但是,p2以哪种方式影响x?新的诺言x是否仅获得p2.state()的值?

最佳答案

是的,then确实返回解析为回调结果的新承诺(x)-如果结果(p2)是一个承诺,则其状态将被采用,以便x在p2拒绝时,>完成并拒绝。另请参见here,并可能阅读了Promises/A+ spec

关于javascript - 什么 promise 会返回?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35290281/

10-11 23:29
查看更多