Skip to content

添加一个AbortablePromise实现 #11

Open
@otakustay

Description

@otakustay

在实际的应用场景中,并非所有的promise不能 受外部控制,有时候会需要通过外部来中断一个异步的操作,比如当前的环境已经销毁啦,比如一个ajax请求不想继续啦

对此,作为异步统一API的库,应该提供一个规范的方式。为些,提供一个AbortablePromise的类,其除了标准的then等方法外,提供abort()方法,无参数,默认abort的行为为:

清除所有的callback,后续的resolvereject不再起效,同时之后任何通过then传递的callback都不会再被调用

另外,有部分promiseabort会有reject的效果,关于此类比较特殊的情况,考虑是由本库通过属性(比如rejectOnAbort)或者其它方式直接支持,还是让使用方自己去控制(重写abort方法后再返回),个人推荐暂时使用后者,等成熟了再由库直接支持

至于创建的方法,有2种:

  • new AbortablePromise()
  • new Promise.Abortable()

暂时无法断言哪个更好,后续综合考虑

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions