跳到主要内容

异步承诺(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 值;如果未提供参数,则以 "rejected" 作为拒绝原因。

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() 时触发。常用于清理正在进行的工作,例如中止网络请求。会替换此前已注册的 hook。

getStatus​

getStatus() -> string

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

看完还有疑问?进群交流下!
与众多 Rive 创作者、开发者一起交流探讨与答疑解惑。
加入交流群