Open
Description
在实际的应用场景中,并非所有的promise
都 不能 受外部控制,有时候会需要通过外部来中断一个异步的操作,比如当前的环境已经销毁啦,比如一个ajax
请求不想继续啦
对此,作为异步统一API的库,应该提供一个规范的方式。为些,提供一个AbortablePromise
的类,其除了标准的then
等方法外,提供abort()
方法,无参数,默认abort
的行为为:
清除所有的
callback
,后续的resolve
和reject
不再起效,同时之后任何通过then
传递的callback
都不会再被调用
另外,有部分promise
的abort
会有reject
的效果,关于此类比较特殊的情况,考虑是由本库通过属性(比如rejectOnAbort
)或者其它方式直接支持,还是让使用方自己去控制(重写abort
方法后再返回),个人推荐暂时使用后者,等成熟了再由库直接支持
至于创建的方法,有2种:
new AbortablePromise()
new Promise.Abortable()
暂时无法断言哪个更好,后续综合考虑