promise.reject 会生成一个拒绝的promise,并且抛出一个异常,但是这个异常并不能被try catch捕获,只能被then的拒绝处理程序来捕获。之所以不能被try catch捕获,是因为promise.reject是一个异步程序,而try catch是一个异步程序。
promise的实例的方法
then方法:then方法主要接收两个参数,第一个参数在promise的状态进入resolved的时候执行,第二个参数在promise的状态进入reject的时候进行。传递给then方法的任何非函数类型的参数都会被忽略,Promise.prototype.then的方法返回的是一个promise对象。这也是then可以链式调用的原因。这个新的promise对象的值取决于Promise.resolve返回的值。
then 方法返回一个新promise的情况,要反复看
如果then方法的onreject处理程序和.catch方法同时存在的话,那么会进入onreject程序里,而不再进入catch方法里面,如果没写onreject处理程序的话,那么就会进入.catch的方法里,如果这个方法也没有的话,那就出现异常卡住的情况下,会进入到浏览器的全局异常处理函数那里,不管promise的执行器函数里面写的到底是同步代码还是异步代码,都是这样
async
使用async声明的函数,代表这个该函数是异步的