美文网首页
取消 promise

取消 promise

作者: 织雪纱奈 | 来源:发表于2019-08-26 14:48 被阅读0次
 return new Promise(()=>{}); 

然而这个方案有一个不那么明显的缺陷,那就是会造成潜在的内存泄露。

重写then,如果相等,那么不执行回调

(function() {
  var STOP_VALUE = {}//只要外界无法“===”这个对象就可以了
  var STOPPER_PROMISE = Promise.resolve(STOP_VALUE)

  Promise.prototype._then = Promise.prototype.then

  Promise.stop = function() {
    return STOPPER_PROMISE//不是每次返回一个新的Promise,可以节省内存
  }

  Promise.prototype.then = function(onResolved, onRejected) {
    return this._then(function(value) {
      return value === STOP_VALUE ? STOP_VALUE : onResolved(value)
    }, onRejected)
  }
}())

Promise.resolve(8).then(v => {
  console.log(v)
  return 9
}).then(v => {
  console.log(v)
  return Promise.stop()//较为明确的语义
}).catch(function(){// will never called but will be GCed
  console.log('catch')
}).then(function(){// will never called but will be GCed
  console.log('then')
})

相关文章

  • 取消 promise

    然而这个方案有一个不那么明显的缺陷,那就是会造成潜在的内存泄露。 重写then,如果相等,那么不执行回调

  • 完整版实现Promise

    promise的三个缺点1,无法取消promise,一旦新建它就会立即执行,无法中途取消2,如果不设置回调函数,p...

  • Promise和Observable的映射

    前言 promise解决了嵌套地狱的问题,Observable解决了promise只有一个结果,和不可以取消的问题...

  • 「React Native」Promise取消请求

    参考链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Fet...

  • 可取消的 Promise

    原文链接

  • Uncaught (in promise) cancel

    Uncaught (in promise) cancel 这是因为你点击了取消或者是关闭弹窗,但是你没有写catch

  • 可取消cancelable的promise实现机制

    在mobx6中可以通过引入flow来实现取消promise,在实际工作中应用场景很多,如react更新页面时取消正...

  • Promise 异步分离实现 cancel request

    巧妙的通过改变 Promise 状态实现取消请求 封装之后外部拿不到 xhr 实例,内部通过判断传入的 cance...

  • Promise

    Promise一但新建(new)便立即执行,不能中途取消;如果内部不reject外部不捕获则错误不会反应到外部;无...

  • Promise.race的简单实现

    Promise.race的简单实现 作用当想要实现一个方法,每次传入多个请求,哪个先返回就取消其他的,使用先返回的...

网友评论

      本文标题:取消 promise

      本文链接:https://www.haomeiwen.com/subject/xgorectx.html