一.Promise是什么?
输出Promise,看看它是什么
console.dir(Promise)
由此可见:
1、Promise是一个构造函数,和数组类似
2、有all、finally,race, reject, resolve, virtual这几个方法,其中all,reject, resolve,较常见
3、原型上有catch,constructor,finally,then方法,也就是用Promise new出来的对象肯定就有then、catch等方法
new一个测试
init(){
console.dir(Promise)
let myPromise = new Promise(function(resolve,reject){
//写一些异步操作, 处理结束后、调用resolve 或 reject
//异步请求包括:setTimeout,XHR请求等
setTimeout(() => {
console.log("请求异步数据完成")
resolve("操作成功了")
}, 2000);
})
//实例化过的 promise 对象可以调用 promise.then() 方法
myPromise.then(function(result){
//result是上面调用resolve或者reject方法传入的值.
console.log(result)
})
}
Promise的构造函数接收一个参数,是函数,并且传入两个参数:
resolve:函数,异步操作执行成功后的回调函数
reject:函数,异步操作执行失败后的回调函数
“成功”和“失败”描述的并不准确,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。
二、Promise的理解:
Promise
是
JS
中进行
异步编程
的新解决方案 ,旧方案是单纯使用回调函数
语法上:Promise 是一个构造函数
功能上:promise 对象用来封装一个异步操作并可以获取其成功/ 失败的结果值
promise的状态:
1.promise对象的状态不受外界影响。
Promise 对象代表一个异步操作,有三种状态:
- pending: 初始状态,不是成功或失败状态。
- fulfilled: 意味着操作成功完成。
- rejected: 意味着操作失败。
2. 状态的改变:
1. pending 变为 resolved2. pending 变为 rejected
说明
:
1.
只有这
2
种
,
且一个
promise 对象只能改变一次,一旦状态改变,就不会再变,任何时候都可以得到这个结果。
无论变为成功还是失败,
都会有一个结果数据。
2. 成功的结果数据一般称为
value,
失败的结果数据一般称为
reason