promise,一个promise可以 then多次,因为,每次都返回一个新的 promise

abort

  1. function withAbort(p1) {
  2. let fail = null;
  3. let p2 = new Promise((resolve, reject) => {
  4. // 先将 p2的 reject失败方法暴露出来
  5. fail = reject
  6. });
  7. const p = Promise.rece([p1, p2]); // race一个失败就是失败态
  8. p.abort = fail
  9. return p;
  10. }
  11. const p = withAbort(new Promise((resolve, reject) => {
  12. setTimeout(() => resolve('ok'), 3000)
  13. }))
  14. p.abort() // 终止执行,虽然 abort终止了 promise的执行,但后面的代码还会执行
  15. p.then(data => {})
  16. .catch(err =>err)

如何中断 promise

promise中的链式调用如何中断?
中断 Promise 就是返回一个 等待的 promise
直接 return new Promise(() => {}) 既不成功,也不失败

  1. new Promise((resolve, reject) => {
  2. // abort
  3. return new Promise(() => {})
  4. })