异步承诺(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 会收到 resolve、reject 和 onCancel 回调。
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"。