我有一系列的承诺(主要是ajax调用,但有一些默认)。
我这样称呼他们,我的问题是我还需要混合一些不返回承诺的标准函数,我已经下面了,这是正确的方法吗?
基本上我希望承诺A,B和C运行,然后执行我的非承诺方法,一旦完成,继续承诺D和E.
this.promiseA()
.then(this.promiseB)
.then(this.promiseC)
.then(function(){
//do some methods that do not return promises
})
.then(this.promiseD)
.then(this.promiseE);
答案 0 :(得分:0)
this.promiseA()
.then(this.promiseB)
.then(this.promiseC)
.then(function(){
//do some methods that do not return promises
// modify original promise here , else original promise
// passed to next `.then` in chain
// return $.when(true);
})
.then(this.promiseD)
.then(this.promiseE);
答案 1 :(得分:0)
then
函数可以发回任何内容,包括undefined。如果需要,任何东西都封装在一个新的Promise中,这样链就可以继续。
如果您的函数返回Promise或者thenable,则在此对象完全填充时链将继续。然后,promiseD
将收到此值的已解决值。
如果函数返回立即值或null或未定义,则链将立即继续。 promiseD
将获得上述价值。
是的,你的解决方案是正确的。