【问题标题】:Fail for Inner request caused fail of parent request内部请求失败导致父请求失败
【发布时间】:2016-12-07 12:55:56
【问题描述】:
我构建Jquery Promise。
接下来是它的结构:
request1()
.then(response => {})
.then( () => {
request2().done(response => {})
}
.fail(err => {});
在done 和fail 块中,我对屏幕进行“解锁”。但有时我无法获得“解锁”代码。
这是否意味着在request2 中发生了一些不好的事情,而这个不好的事情在父请求的fail 中没有解决?
【问题讨论】:
标签:
javascript
jquery
promise
jquery-deferred
【解决方案1】:
是的,因为你需要在第二个 then 中返回 promise:
.then( () => {
return request2().done(response => {})
}
或者,如果您不使用块,则在 ES6 lambda 中自动返回。
.then( () => request2().done(response => {}) )
【解决方案2】:
您的 fail 和 done 回调不是在同一个承诺上。 request1() 和 request2() 创建自己的。
var deferred = request1();
deferred.then(response => {})
.then(() => {
request2().done(deferred.resolve)
.fail(deferred.reject)
})
.done(response => {})
.fail(err => {});