【发布时间】:2017-01-04 14:06:13
【问题描述】:
我想做这样的事情:
return1stPromise()
.then(if1stPromiseSucceeds) // returns 2nd Promise
.catch(if1stPromiseFails)
.then(if2ndPromiseSucceeds) // execute only if 1st Promise succeeds
我希望第二个 .then 仅在第一个 Promise 成功时执行。或者换一种说法——如果 catch 已经执行,我不希望第二个 .then 执行。
这是否可能,或者我是否将第二个承诺嵌套在第一个 then 中,如下所示:
return1stPromise()
.then(function (data) {
return if1stPromiseSucceeds(data).then(if2ndPromiseSucceeds);
})
.catch(if1stPromiseFails);
此外 - 关于如何使用 Promises 控制流的任何好的资源,它更像线程?
【问题讨论】:
-
如果链中的任何承诺失败,您的
catch将被调用,而不仅仅是第一个。您能更具体地说明您希望发生的事情吗? -
“这可能吗”。是的。您发布的内容将按此方式工作。
-
对不起,我不够清楚:我希望第二个
.then仅在第一个 Promise 成功时执行。或者换一种说法——如果catch已经执行,我不希望第二个.then执行。更新的问题。 -
@krulik:嗯,这大大改变了问题。
-
我相信你真正想要的是
return1stPromise().then(x => if1stPromiseSucceeds(x).then(if2ndPromiseSucceeds), if1stPromiseFails)。看看here 的区别。
标签: javascript promise