前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用async和await封装axios

使用async和await封装axios

作者头像
用户6256742
发布2022-07-06 14:54:50
1.5K0
发布2022-07-06 14:54:50
举报
文章被收录于专栏:网络日志网络日志

在最近的vue开发中ajax库选择了axios,需要根据回调函数的参数执行一个很长的代码块,执行函数加上axios参数代码量非常大不便于后期的优化和代码维护,于是我上网寻求axios异步的放法,被告知axios是promise返回值没有同步,如果代码量大可以尝试自行封装,于是研究了async和await

ES6Promise:

代码语言:javascript
复制
new Promise(function (resolve, reject) {
    console.log(1111);
    resolve(2222);
}).then(function (value) {
    console.log(value);
    return 3333;
})

Copy

JavaScript

生成一个异步函数如果执行成功就执行then中的函数如果失败就执行catch中的函数

async就是将一个普通函数返回为promise,当然在学习async和await时你需要先了解promise的用法

代码语言:javascript
复制
async function test() {
    return 'a'
}
test().then(res => {
    console.log(res);//"a"
})

Copy

JavaScript

test函数加上async会被转化为promise其中的return返回值就是then函数的参数

await只能使用在promise中(包括async的返回函数)其用途和他的中文含义差不多:等待,意思是必须等到加await的函数结束promise才会继续执行

代码语言:javascript
复制
import axios from 'axios';

async function createType(getData) {
    let data;
    await axios({
        method: "POST",
        url: '/create-type',
        data: {
            type: getData.type
        }
    }).then(res => {
        data = res.data;
    })
    return data;
}
export default createType;

Copy

JavaScript

  1. 引入axios将
  2. createType转化为promise
  3. 设置变量data准备作为返回值
  4. 为axios函数添加await等待axios完全执行完createType才会返回data变量
  5. 请求成功后将axios的请求值赋值给变量data
  6. 将整个函数导出方便复用

项目导入函数

代码语言:javascript
复制
import createHtml from "@/modules/function/createHtml";
import updataHtml from "@/modules/function/updataHtml.js";
import updataArticle from "@/modules/article/updata-article";

Copy

JavaScript

ajax函数使用

代码语言:javascript
复制
createType({ type: type.value }).then((res) => {


});

Copy

JavaScript

!!:函数内对象为正常的函数传参

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com