Promise 有个缺点就是一旦创建就无法取消,所以本质上 Promise 是无法被终止的,但我们在开发过程中可能会遇到下面两个需求:
中断调用链
就是在某个 then/catch 执行之后,不想让后续的链式调用继续执行了,即:
somePromise
.then(() => {})
.then(() => {
// 终止 Promise 链,让下面的 then、catch 和 finally 都不执行
})
.then(() =>console.log('then'))
.catch(() =>console.log('catch'))
.finally(() =>console.log('finally'))
复制代码
答案就是在 then/catch 的最后一行返回一个永远 pending 的 promise 即可:
returnnewPromise((resolve, reject) => {})
复制代码
这样的话后面所有的 then、catch 和 finally 都不会执行了。
中断Promise
注意这里是中断而不是终止,因为 Promise 无法终止,这个中断的意思是&#x