跳到主要内容

异步承诺(Promise)

表示未来才会可用的值。

可以使用 andThen 注册完成回调,也可以在 async 中使用 await 挂起执行,直到值准备好。

Promise 支持取消:调用 cancel() 可以中止未完成的工作,并把取消状态传播到链式 Promise。

字段(Fields)

andThen

当 Promise fulfilled 时注册回调。处理函数可以返回一个值,该值会成为下一个 Promise 的结果。

构造函数(Constructors)

new

new(executor: (resolve:(value: T) ->(), reject:(error: any) ->(), onCancel:(hook:() ->()) ->()) ->()) -> Promise<T>

使用 executor 函数创建新的 Promise。executor 会收到 resolverejectonCancel 回调。

resolve

resolve(value: T?) -> Promise<T>

创建一个已经 resolved 的 Promise。如果未传入值,则使用 nil 解析。

reject

reject(error: any?) -> Promise<T>

创建一个已经 rejected 的 Promise。错误可以是任意 Lua 值;如果未提供参数,会使用默认原因。

all

all(promises: {Promise<T>}) -> Promise<{T}>

等待所有 Promise resolve;如果任意 Promise reject,则整体 reject。发生 reject 时,其余 Promise 会被取消。

方法(Methods)

catch

catch(onRejected: (error: any) -> any) -> any

当 Promise reject 时注册回调。错误可以是任意 Lua 值,例如字符串、表、数字等。

finally

finally(onFinally: () ->()) -> Promise<T>

注册一个无论 Promise fulfilled 还是 rejected 都会运行的回调。

cancel

cancel() -> Promise<T>

取消当前 Promise。它会触发已注册的 onCancel hook,把取消状态向下传播到链式 Promise,并在所有消费者都取消时向上传播到父 Promise。如果 Promise 已经 settled,则不会产生影响。

onCancel

onCancel(hook: () ->()) -> Promise<T>

注册取消 hook,在调用 cancel() 时触发。常用于清理正在进行的工作,例如中止网络请求。

getStatus

getStatus() -> string

返回当前状态:"Pending""Fulfilled""Rejected""Cancelled"