介绍
状态: Promise有三种状态,pending(异步操作未开始)、fulfilled (异步操作成功)、rejected(异步操作失败)
优点: 将异步操作以同步操作的流程表达出来,避免层层嵌套的回调函数。
缺点: 1. 无法中途取消,一但建立就会立即执行。2. 如果不设置回调,内部的错误不会反映到外部。Promise.all方法和Promise.race方法
Promise.all用于将多个Promise实例包装成一个新的Promise实例
let promise = Promise.all([promise1, promise2, promise3])
// Promise.all方法接收一个数组作为参数,数组的内容必须都是Promise对象。promise的状态有数组中所有的对象决定
// 1、当且仅当promise1、promise2、promise3的状态都为fuifilled时,promise的状态才是fuifilled。此
// 时promise1、promise2、promise3的返回值组成一个数组传递给promise的回调函数
// 2、promise1、promise2、promise3中有一个状态为rejected,promise的状态为rejected
Promise.race定于同Promise.all方法类似。主要区别在于改方法参数中的一个对象的状态率先改变,promise的状态就会发生改变
- Promise.resolve和Promise.reject
Promise.all是将现有的对象转成Promise对象
let promise = Promise.resolve('NBA')
// 该代码生成一个Promise实例,它的状态为fulfilled,所以会立刻执行它的回调函数。
// 如果传入的是一个Promise对象,那么会原封不动地返回
Promise.reject()的用法与Promise.resolve()类似。