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