promise是异步编程的一种解决方案,是一个构造函数,有all、reject、resolve
等方法,原型上有then、catch等方法
promise对象的状态不受外界影响,有三个状态:
pending 初始状态
fulfiled 成功
rejected 失败
状态一经改变,不会再变,是不可逆的,只有两种情况:
从pending变成fulfiled,
从pending变成rejected
在promise中接收两个函数作为参数:resolve(成功的回调)、reject(失败的回调)
成功执行resolve,失败执行reject
promise的then方法可以调用成功状态,catch方法调用失败状态
finally 成功和失败都可以调用
all () 等待所有的异步操作都执行成功才返回成功的状态
race () 所有的异步操作哪个先执行结束,无论成功失败,就返回第一个执行结束的返回值
下面是封装的axios请求:
function axios() {
return new Promise((resolve, reject) => {
var xhr = new XMLHttpRequest()
xhr.open('get','接口')
xhr.send()
xhr.onreadystatechange==function(){
if(xhr.readyState==4&&xhr.status==200){
resolve(xhr.response)
}else if(xhr.readyState==4&&xhr.status!==200){
reject('失败')
}
}
})
}
let a=axios()
console.log(a);
a.then(res=>{
debugger
}).catch(err=>{
})