1 什么是Promise
1.1 Promise 解决的问题
1.1.1 回调地狱
我们在做项目的时候经常遇到多个回调函数嵌套在一起的情况,一层套一层,代码不够直观并且不容易维护,就是所谓的回调地狱。Promise 就很好的解决了这个问题。
1.1.2 并行结果
如果几个异步操作之间并没有前后顺序之分,但需要等多个异步操作都完成后才能执行后续的任务,无法实现并行节约时间。
1.2 Promise的简介
Promise是抽象异步处理对象以及对其进行各种操作的组件。在 ES6 Promises 标准中定义的API还不是很多。目前大致有下面三种类型。
1.2.1 Constructor
//要想创建一个promise对象、可以使用new来调用Promise的构造器来进行实例化。
var promise = new Promise(function(resolve, reject) {
// 异步处理
// 处理结束后、调用resolve 或 reject
});
1.2.2 Instance Method
// 对通过new生成的promise对象为了设置其值在成功/失败时调用的回调函数 可以使用promise.then() 实例方法。
// resolve(成功)时onFulfilled 会被调用
// reject(失败)时onRejected 会被调用
promise.then(onFulfilled, onRejected)
1.2.3 Static Method
// 一些对Promise进行操作的辅助方法,
// 包括 Promise.all() 、Promise.race() 、Promise.resolve()、Promise.reject() 等
2 Promise常用的API
2.1 Promise.all
- 参数:接受一个数组,数组内都是Promise实例
- 返回值:返回一个Promise实例,这个Promise实例的状态转移取决于参数的Promise实例的状态变化。当参数中所有的实例都处于resolve状态时,返回的Promise实例会变为resolve状态。如果参数中任意一个实例处于reject状态,返回的Promise实例变为reject状态。 Promise.all([p1, p2]).then(function (result) { console.log(result); // [ '2.