考虑以下代码:
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/