定义
Promise对象用于表示(管理)一个异步操作的最终完成(或失败)及其结果值。
好处:1)成功和失败状态,可以关联对应处理程序 2)了解axios函数内部运作机制 3)能解决回调函数地狱问题
语法:
//1.创建Promise对象
const p=new Promise((resolve,reject)=>{
//2.执行异步任务-并传递结果
//成功调用:resolve(值) 触发then()执行
//失败调用:reject(值) 触发catch()执行
})
//3.接收结果
p.then(result=>{
//成功
}).catch(error=>{
//失败
})
new Error('错误信息'):创建一个错误对象
三种状态
概念:一个Promise对象,必然处于以下几种状态之一
1)待定(pending):初始状态,既没有被兑现,也没有被拒绝
2)已兑现(fulfilled):意味着,操作成功完成
3)已拒绝(rejected):意味着,操作失败
注意:Promise对象一旦被兑现/拒绝就是已敲定了,状态无法再被改变
Promise对象创建时,Promise对象里的代码就会在执行了
//创建Promise对象
const p=new Promise((resolve,reject)=>{
//执行XHR异步代码,获取省份列表
const xhr = new XMLHttpRequest()
xhr.open(请求方式,URL)
xhr.addEventListner('loadend',()=>{
//响应状态码为2xx都是成功响应
if(xhr.status >=200 && xhr.status < 300){
resolve(JSON.parse(xhr.response))
}else{
reject(new Error(xhr.response))
}
})
xhr.send()
})
//关联成功或失败函数,做后续处理
p.then(result=>{
//成功
}).catch(error=>{
//错误对象要用console.dir详细打印
console.dir(error)
})