axios和promise
promise和axios知识点,解疑,一看就明白,清晰
·
promis:
- promise是构造函数,可以进行实例化,接收参数(resolve,reject,)他俩是函数类型的数据,当异步任务成功,调用resolve,失败调用reject
- promise的作用封装异步操作,获取异步任务成功和失败的数据
- then方法解析promise对象
const p = new promise(resolve,reject)=>{
setTimeout(()=>{
let n = rand(1,100);
if(n<=30){
reslove(n);//可以将promise的状态设置为成功
}else{
reject(n);//可以将promise的状态设置为失败
}
},1000)
}
//then方法 接收俩参数,俩参数都是函数类型的值,第一个函数是对象成功时的回调,第二个函数是对象失败时的回调,俩回调函数里面的参数,都是固定(约定的),所以上面的 reslove(n)中的n就是value,同理如果n>30的时候,n就是reason
p.then(value =>{
alert('恭喜成功,您的数字为' + value)
},reason =>{
alert('再接再厉,,您的数字为' +reson)
})
3.promise封装ajax请求
封装一个函数,sendAjax 发送 GET AJAX 请求 参数是URL 返回的是promise对象
function sendAjax(url){
return new Promise((resolve,reject) => {
const xhr = new XMLHTTPRequest();
//初始化
xhr.open("get","url");
xhr.send();
//处理结果
xhr.onreadystatechange = function(){
if(xhr.readState === 4){
if(xhr.status >= 200 && xhr.status <300){
reslove(xhr.response)
}else {
reject(xhr.status)
}
}
}
});
}
sendAjax('http://api.apiopen.top/getjoke')
.then(vaule =>{
console.log(value)
},reason =>{
console.log(reason)
})
4.promise的两种状态改变 (只能从pedding变成resolve,或者pedding变成rejected)
promise实例对象当中的属性
一、PromiseStatus:promise的状态
PromiseStatus的三种状态:
(1) pending:未决定的(初始化)
(2.)resolved / fullfiled 成功
(3)rejected 失败
二、PromiseResult: promise对象的值
保存的是异步任务成功或失败的值
resolve
result
const p = new promise(resolve,reject)=>{
setTimeout(()=>{
let n = rand(1,100);
if(n<=30){
reslove(n);//可以将promise的状态设置为成功
}else{
reject(n);//可以将promise的状态设置为失败
}
},1000)
}
console.log(p)
//then方法 接收俩参数,俩参数都是函数类型的值,第一个函数是对象成功时的回调,第二个函数是对象失败时的回调,俩回调函数里面的参数,都是固定(约定的),所以上面的 reslove(n)中的n就是value,同理如果n>30的时候,n就是reason
p.then(value =>{
alert('恭喜成功,您的数字为' + value)
},reason =>{
alert('再接再厉,,您的数字为' +reson)
})
5.promise工作流程
6.catch方法,参数是回调函数,catch其实是封装的,它内部的实现其实也是由then方法来实现的
p.catch(reason =>{
})
7.promise当中的方法,
resolve 是promise的方法,不是实例的方法
resolve里面的参数,非Promise类型的对象,则返回的结果为成功的Promise对象
如果传入的参数是promise对象,则 参数的结果就是resolve的结果
<script>
let p1 = Promise.resolve(521);
console.log(p1);
</script>
Promise {<fulfilled>: 521}
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: 521
8.串联多个任务
axios
- 基于promise的http客户端,可以在浏览器和node.js俩个环境中取运行,在浏览器端借助axios发送ajax请求来获取数据,可以在node.js中去请求,请求拦截器
拦截器
2.axios.interceptors.request.use(); 添加请求拦截器
interceptors是对象 request是属性 他的值是对象 use是方法
3axios.create([config]) 创建一个新的axios,
老师讲的是,axios的二次封装
axios是ajax对Xhr的封装
更多推荐
已为社区贡献1条内容
所有评论(0)