​ 1、Promise 、axios 、async和await

news/2024/6/29 3:08:32

1.0 同步与异步 【了解】

  • 同步: 具有阻塞性

  • 异步: 异步代码同时执行,谁跑的快谁就先执行完,异步与同步相遇,先让同步执行完毕后再执行异步代码

  • 异步分类:(执行完成时间不确定或代码执行时间过长)

    • 定时器

    • 事件处理函数

    • 异步ajax

2.0 Promise -- 解决回调地狱 【掌握】

2.1什么是Promise?

他是一个构造函数,通过new 创建实例使用,他有3个状态,进行中、已成功、已失败,状态一旦确定就凝固了

2.2 语法结构

 new Promise((resolve,reject)=>{ // 成功回调,失败的回调
     // 处理异步的内容
     if(得到的异步结果===true){
         // 符合你的预期
         resolve(成功返回的数据)
     }else{
         reject('失败的错误')
     }
 })
.then((data)=>{
     // data 就是你成功返回的数据
 })
.catch((err)=>{
     // err 就是你失败后的错误
 })
​

 

2.3 Promise的其他方法

Promise.all() :

同时请求多个Promsie任务,只有全部成功才会成功,如果有一个失败那就全部失败

const p1 = new Promise(resolve=>{
    // 异步操作
    setTimeout(()=>{
        resolve()
    },1000)
})
const p2 = new Promise((resolve,reject)=>{
    // 异步操作
    setTimeout(()=>{
        reject('失败')
    },1500)
})
Promise.all([p1,p2])
.then(res=>{
    // 只有全部成功才会成功,如果一个失败,就全部失败
})
.finally(() => {
    console.log('你是最后的');
})

 

Promise.race() :

同时请求多个Promise任务,返回跑的最快的那个,无论成功与否

// race 赛跑
    const p11 = new Promise(resolve => {
        setTimeout(() => {
            resolve('p11 success')
        }, 1800)
    })
    const p12 = new Promise(resolve => {
        setTimeout(() => {
            resolve('p12 成功')
        }, 1500)
    })
    const p13 = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('p13 失败')
        }, 1000)
    })
​
    // 看谁跑的快就返回谁
    Promise.race([p11, p12, p13])
        .then(res => {
            console.log(res);
        })
        .catch(err => {
            console.log(err);
        })
        .finally(() => {
            console.log('你是最后的');
         }) 

 

Promise.finally() :

无论成功与否,都会执行

3.0 axios 【掌握】

基于Promise的Http请求库

语法结构:

get:

axios.get('url?参数='+参数值)
.then(res=>{})
​
axios.get('url',{
    params:{
        键名:键值,键名1:键值1
    }
})

post:

axios.post('url',{键名:键值,键名1:键值1})

配置项写法:

axios({
    method: '请求方式 get post',
    url: '请求地址',
    // 如果你是get请求
    params:{
        键名:键值,键名1:键值1
    },
    // 如果你是post请求
    data:{
        键名:键值,键名1:键值1
    }
})
​

 

参数配置

baseURL :'基础地址'
    axios.defaults.baseURL= 'http://139.9.177.51:3701'
timeout : 超时时间ms
    axios.defaults.timeout = 15000

axios解决回调地狱

 

4.0 async 和 await 【重点】

async 音译:异步

await 音译:等待

4.1 语法结构[背]

  • async 用于修饰函数,表示该函数里存在异步操作

  • await在async修饰的函数中,必须连用

  • await 用于修饰Promise

     

 // async 和 await 实现
    const fn = async () => {
        // 请求a.json得到code
        const res = await axios('./serve/a.json')
        const { code } = res.data
        // 携带code 请求b.json 得到id
        const res1 = await axios(`./serve/b.json?code=${code}`)
        const { id } = res1.data
        // 携带id 请求c.json 得到data
        const res2 = await axios(`./serve/c.json?id=${id}`)
        document.querySelector('h1').innerHTML = res2.data.data
    }
    fn()

async和awite解决回调地狱

 


http://lihuaxi.xjx100.cn/news/1098854.html

相关文章

【Python】极致的大文件处理思路来啦

文章目录 前言一、开始二、处理文本3.串行处理输出多进程处理输出并行处理输出并行批量处理批量处理函数将文件分割成批运行并行批处理输出tqdm 并发输出 总结 前言 为了进行并行处理,我们将任务划分为子单元。它增加了程序处理的作业数量,减少了整体处…

SQLite安装配置

1.什么是 SQLite? SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite源代码不受版权限制。 SQLite是…

使用 OpenSSL 库实现 AES 加密和解密

由于通信加密涉及到较为复杂的加密算法和网络通信&#xff0c;因此需要结合相关的库和框架进行编写。以下是一个简单的使用 OpenSSL 库实现 AES 加密和解密的示例代码&#xff1a; c #include <stdio.h> #include <stdlib.h> #include <string.h> #include &…

Apache Kafka 进阶(一)

官网 Apache Kafka是一个开源的分布式事件流平台&#xff0c;被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 核心能力 高吞吐量 在网络有限的吞吐量下&#xff0c;使用延迟低至2ms的机器集群交付消息。可扩展性 将生产集群扩展到1000个代理&#xff0c…

校招在线测评题目汇总

图形找规律题 https://blog.csdn.net/mxj1428295019/article/details/129627461https://blog.csdn.net/Yujian2563/article/details/124266574?spm1001.2101.3001.6650.2&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-124266574-blo…

如何安全免费地备份VMware虚拟机?

在没有备份的情况下在虚拟机上运行所有工作负载是有风险的。任何人为错误或自然灾害都可能对您的 VMware 虚拟机造成不可逆转的损坏&#xff0c;您无法预测下一秒您的虚拟机会发生什么。因此&#xff0c;您需要一个可靠的免费 vmware 备份解决方案来保护您的虚拟机数据免受安全…

06 - 2 分层架构模式(Layered Arch)

层 层的定义 层&#xff1a;软件的逻辑单元每一层都有特定的功能组件被分配到不同的层 何谓分层 将系统按照职责拆分和组织上层依赖于直接下层 下层不可以依赖于上层不可以跃层访问&#xff08;理想状况&#xff09; 经典分层架构 OSI 7 层架构 CS 两层架构Client&…

运维简单面试题

问题&#xff1a;使用Linux命令查询file.txt中空行所在的行号 awk /^$/{print NR} file1.txt 问题&#xff1a;有文件file2.txt内容如下: 求一列的和 张三 40 李四 50 王五 60 awk {sum$2} END{print "求和"sum} file2.txt 问题&#xff1a;Shell脚本里如何检查…