Promise

参阅: http://es6.ruanyifeng.com/#docs/promise

promise 有三种状态,

  • ​pending​
  • ​fulfilled​​ 完成
  • ​rejected​​ 出错

新建 promise 对象

新建 promise 对象的时候,传递两个方法 ​​resolve​​​ ​​reject​​ 作为参数,这两个方法是系统已经存在的,直接用就可以了。

​resolve​​​ 用于将 promise 状态设置成 ​​fulfilled​​​​reject​​ 用于将 promise 状态设置成 ​​rejected​

const promise = new Promise(function(resolve, reject) {
// ... some code

if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});

设置相应状态的操作

promise 通过 ​​.then ()​​ 来执行后续操作,成功或失败。

​.then()​​​ 里面传递两个参数,都是方法,第一个是当状态为 ​​fufilled​​​ 时调用的方法,第二个是当状态为 ​​rejected​​ 调用的。

let promise = document.documentElement.requestFullscreen();
promise.then(
success => {console.log(success)},
error => {console.log(error)},
)

还有一种写法,用 ​​.catch()​​​ 接收错误时的返回值并作相关处理,对应成功时的 ​​.then()​

promise .then(data => { // 成功时的操作})
.catch(error => { // 出错时的操作})

promise.all()

接收 promise 数组作为参数,返回一个新的 promise 对象,当参数中所有 promise 都为 ​​fufilled​​​ 状态时,才返回 ​​fulfilled​​​ 状态; 当任一个状态为 ​​rejected​​​ 时,这个 promise 状态就为 ​​rejected​