promise是ES6的一个类,promise是用来解决异步程序的,在promise出现之前用来解决异步程序的只有回调函数,但是如果下一次程序的值还要依赖上一次异步程序的值/下一个程序还是异步,回调函数里面又要嵌套回调函数,这样一层层嵌套就形成了回调地狱,对程序开发很不好,所以就出现promise;promise一共有三种状态,pedding.fulfill.reject,三种状态,异步程序请求成功状态改变为fuifill,请求失败状态改变为reject,状态的改变是不可逆的,只有状态改变后函数才能调用;
promise类的匿名函数里面有两个形参,一个形参是异步程序执行成功调用的函数,第二个形参是异步程序执行失败调用的函数,将异步程序写到promise匿名函数里面;
.then有两个回调函数,第一个是成功的函数体,第二个是失败的,第二个函数有时会省略,这时候就会执行catch;reject()相当于抛出一个错误,这个错误要用.then第二个参数/.catch去捕获;(promise类只会调用.then这个函数,如果抛出错误后promise不管,留给下一个promise对象,也就是.then调用后返回的promise对象,会再去调用.then/.catch,并且.then会把返回值作为下一次.then/.catch的参数并且根据状态自动调用对应的函数;这其实利用的就是promise的链式结构;