1、Promise.prototype.then()方法显然就是Promise的精华。函数声明:p.then(resolve, reject);。
then()方法不是静态方法,需要经由Promise实例对象来调用。
then方法有两个参数,第一个参数是Promise实例对象为Resolved状态时的回调函数,它的参数就是上面Promise构造函数里resolve传递过来的异步操作成功的结果。
第二个参数可选,是Promise实例对象为Rejected状态时的回调函数,它的参数就是上面Promise构造函数里reject传递过来的异步操作失败的信息。
then方法最强大之处在于,它内部可以使用return或throw来实现链式调用。使用return或throw后的返回值是一个新的Promise实例对象(注意,不是原来那个Promise实例对象):
2、Promise.prototype.catch()同样是实例方法,需要经由Promise实例对象来调用,用于Promise实例对象状态为Rejected的后续处理,即异常处理。函数声明:p.catch(reject);
catch方法本质上等价于then(null, reject),参数reject是一个回调函数,它的参数就是Promise对象状态变为Rejected后,传递来的错误信息。