promise是异步编程的一种解决方案,从语法上来说,它是一个对象,可以获取异步操作的信
promise的状态
三种状态:pending(进行中),fullfiled(成功),rejected(失败)。除了异步操作的结果,任何其他操作都无法改变这三种状态。
promise对象只有:从pending变为fullfiiled和rejected的状态改变。只要处于fulldiled和rejected,状态就不会再变了即resolved(已定型)
状态缺点
无法取消promise,一旦创建就立即执行,中间不能取消
如果不设置回调函数,promise内部抛出的错误,不会反应到外部
当处于pending状态时,无法得知目前进展到哪一个阶段(干刚开始还是即将完成)
then方法
then方法接收两个函数作为参数,第一个函数是promise执行成功的回调,第二个参数是promise执行失败的回调,两个函数只有一个会被调用
promise的静态方法
- Promise.resolve 返回一个成功的promise对象
- Promise.reject返回一个rejected状态的promise对象
- Promise.all所有请求完成数据,返回一个数组,有一个不成功就失败了
- Promise.race只有一个成功,直接返回结果,后面不执行了