promis:

  1. promise是构造函数,可以进行实例化,接收参数(resolve,reject,)他俩是函数类型的数据,当异步任务成功,调用resolve,失败调用reject
  2. promise的作用封装异步操作,获取异步任务成功和失败的数据
  3. 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

  1. 基于promise的http客户端,可以在浏览器和node.js俩个环境中取运行,在浏览器端借助axios发送ajax请求来获取数据,可以在node.js中去请求,请求拦截器

拦截器

2.axios.interceptors.request.use(); 添加请求拦截器

interceptors是对象 request是属性 他的值是对象 use是方法

3axios.create([config]) 创建一个新的axios,

老师讲的是,axios的二次封装

axios是ajax对Xhr的封装

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐