【发布时间】:2017-01-28 06:37:01
【问题描述】:
我有两个请求和一些函数要在两者之间调用。流程是,当第一个 Promise 被调用并完成时,无论结果是什么(成功或失败),都应该调用一些与 Promise 无关的函数,并且只有在我们调用第二个 Promise 之后。所以这就是我最终这样做的方式,这看起来不是一个好的解决方案。
funtionReturnsPromise()
.then(()=>{})
.catch(()=>{})
.then(()=>{
nonPromiseRelatedFuntion()
})
.then(()=>{
return funtionReturnsPromise2()
})
【问题讨论】:
-
then()中的所有内容都与 Promise 相关。您必须将代码放在承诺代码之前或之后。如果你想让它与一个承诺无关,你不能把它放在中间。 -
为什么你认为这不是一个好的解决方案?
-
我不确定,但你不能在第一个承诺的最后一行使用回调吗?
-
如果你对错误做了一些事情,你的例子看起来不会那么奇怪——你可能想在“现实世界”中以某种方式记录/处理它,然后你的例子就变得非常好了。它基本上完全遵循example 所做的标题为
Using and chaining the catch method -
如果
nonPromiseRelatedFuntion是异步的(即“有回调”)并且你想在承诺链中等待它,你必须promisify它。像 bluebird 这样的库有promisification 的助手。
标签: javascript promise es6-promise