Promise 表示一个异步操作对象,它让我们可以在外部处理异步操作完成或者失败的结果。Promise 是 ES6 的一个标准内置对象,是为了解决 JavaScript 开发中一贯存在的回调地狱问题而提出的。
微信小程序目前已经支持了包括 Symbol、Set、Map、Promise在内的大部分内置对象以及相关的 ES6 方法。小程序中已经原生支持 Promise,不需要引入第三方类库。
Promise 主要方法
-
Promise.prototype.then()
-
Promise.prototype.catch()
-
Promise.prototype.finally()
以下四个都是集合方法,代表将多个 Promise 实例集合成一个新的 Promise 总实例,并施加一种执行控制策略。这四个方法接受的参数都是一个数组,数组的元素都是 Promise 实例。
-
Promise.all()
代表说有子实例都必须处于接受状态,总实例才处于接受状态,否则是拒绝状态。 -
Promise.any()
代表任何一个子 Promise 实例变成接受状态,总实例即处于接受状态。而所有子实例处于拒绝状态时,总实例才处于拒绝状态。
目前 any 方法处于草案阶段,即小程序中没有实现,不过我们可以手动实现。 -
Promise.race()
race 中文意思赛跑,代表各个 Promise 子实例赛跑执行,跑的最快的子实例处于接受或者拒绝状态,总实例则处于接受或者拒绝状态。 -
Promise.allSettled()
代表所有子实例,无论处于接受状态或者决绝状态,他们的状态都改变了,总实例才处于接受状态。同时再回调函数中,返回一个包含所有 Promise 子实例状态的一个数组。
网友评论