返回介绍

Promise API 参考

发布于 2025-04-26 18:09:29 字数 1840 浏览 0 评论 0 收藏

除非特别注明,以下方法均可在 Chrome、Opera 和 Firefox(nightly 版本)中运行。使用 Polyfill 则可以在所有浏览器中实现相同的接口。

静态方法

Promise.resolve(promise)

返回一个 Promsie(当且仅当 promise.constructor==Promise)。

Promise.resolve(thenable)

根据 thenable 对象创建一个新的 Promise。thenable(类 Promise)对象是一个具有“then”方法的对象。

Promise.resolve(obj)

创建一个以 obj 为 resolve 结果的 Promise。

Promise.reject(obj)

创建一个以 obj 为 reject 对象的 Promise。为了一致性和调试便利(如堆栈跟踪), obj 最好是 Error 对象的实例。

Promise.all(array)

创建一个 Promise 对象,当且仅当数组中的所有 Promise 都返回 resolve 的结果之后才 resolve,若数组中有一个 Promise 返回 reject 的结果,则抛出 reject 结果。每个数组元素都会首先经过 Promise.resolve,所以数组可以包含类 Promise 对象或者其他对象。resolve 结果是一个数组,包含传入数组中每个 Promise 的 resolve 结果(且保持顺序); reject 结果是传入数组中第一个遇到的 reject 结果。

Promise.race(array)

创建一个 Promise,当数组中只要有 resolve 时即将其结果作为 resolve 结束,或者只要有 reject 时即将其结果作为 reject 结束。

备注:我不确定这个接口是否有用,但是我更喜欢另一个与 Promise.all 效果相反的方法,即当且仅当数组元素全部给出 reject 的时候才给出 reject 结果。

构造器

new Promise(function(resolve, reject) {});

resolve(thenable)

你的 Promise 根据 thenable 对象的结果来返回 resolve/reject 的结果。

resolve(obj)

你的 Promise 将以 obj 作为 resolve 结果来完成。

reject(obj)

你的 Promise 将以 obj 作为 reject 结果来完成。为了一致性和调试方便(如堆栈跟踪), obj 最好是 Error 对象的实例。任何在构造器的回调函数中发生的错误都会被立即传递给 reject()。

实例方法

promise.then(onFulfilled, onRejected)

当 Promise 以 resolve 结束时会调用 onFulfilled 方法。当 Promise 以 reject 结束时会调用 onRe-jected。这两个参数都是可选的,当任意一个未定义时,对它的调用会跳转到 then 链的下一个 onFulfilled/onRejected 上。这两个回调函数均只接受一个参数,resolve 结果或者 reject 原因。当 Promise.resolve 结束之后,then 会返回一个新的 Promise,这个 Promise 相当于从 onFulfilled/onRejected 中返回的值。如果回调中抛出错误,返回的 Promise 也会以此错误作为 reject 结果结束。

promise.catch(onRejected)

promise.then(undefined, onRejected) 的语法糖。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。