ES6的Promise用法入门

场景

现实开发中,会遇到以下需求:连续多个异步请求,然后,对其返回数据进行处理。比如:

显然,以上代码有明显的缺陷。
1. 一旦遇到异步请求非常多的时候,那么嵌套的代码将会显得混乱不堪,可读性非常差。
2. 如果多个异步请求之间没有关联,后面的请求依旧会等前面的请求完成后,才执行。

为此,ECMAScript 2015中提供了Promise对象来解决这一问题。

Promise对象的基本用法

可以看到,promise对象有两个重要的方法:
1. resolve,将Promise对象的状态改为成功,同时将参数传递给下一个操作
2. reject,将Promise对象的状态改为失败,同时将错误信息传递到下一个操作

Promise的三种状态

  1. Fulfilled 即:成功状态
  2. Rejected 即:失败状态
  3. Pending 可以理解为Promise创建后的初始状态

then和catch

then方法的执行是根据Promise对象的状态来执行的。它接收2个函数作为参数,即:onFulfill 和 onReject。
resolve的时候,执行onFulfill;
reject的时候,执行onReject。

配合ES7的async函数,能使代码更加易读。