then()方法是Promise对象原型的方法,其中包含两个参数onFulfilled和onRejected,它们都是函数。onFulfilled是Promise对象状态由pending(等待)变成fulfilled(成功)时所调用的函数,onRejected是Promise对象状态由pending(等待)变成rejected(失败)时所调用的函数。
当Promise对象状态变成fulfilled时,就会调用then()方法的onFulfilled函数,需要传递一个参数,这个参数会成为onFulfilled函数的第一个参数,可以是任何值。当Promise对象状态变成rejected时,就会调用then()方法的onRejected函数,需要传递一个参数,这个参数会成为onRejected函数的第一个参数,可以是任何值。
then()方法返回的是一个新的Promise对象,它的状态由onFulfilled和onRejected函数的返回值决定。如果onFulfilled和onRejected函数返回一个普通值,那么新的Promise对象状态就会变成fulfilled,它的值就是onFulfilled和onRejected函数返回的值。如果onFulfilled和onRejected函数返回一个Promise对象,那么新的Promise对象的状态就会变成它返回的Promise对象的状态,它的值就是它返回的Promise对象的值。如果onFulfilled和onRejected函数抛出错误,那么新的Promise对象状态就会变成rejected,它的值就是抛出的错误。下面是then()方法的基本用法:
promise.then(onFulfilled, onRejected);
如果只传递onFulfilled函数,比如promise.then(onFulfilled),那么onRejected函数会被默认忽略。
如果不传递任何参数,比如promise.then(),那么then()方法返回的Promise对象的状态就会和调用then()方法之前的Promise对象的状态一致,它的值就是它返回的Promise对象的值。
then()方法是Promise对象状态变化时所调用的函数,在异步编程中经常被使用。所以对于异步编程需要花费一定的时间学习。
上图是来自于Unsplash的一张图片。