其实也没什么,就是用上ES7的异步函数,让ajax使用起来更方便。这个方便主要是体现在:无回调 & 无then链式 & 轻松收集异常。

大致分3步:

1、封装API类(这步不用异步函数)

这一步一般会单独建立一个文件!

// 定义一个API类,专门用于获取各类数据

class Api {

// 有的ajax请求是会做鉴权的,constructor里放这些鉴权参数

constructor (token) {

this.token =token;

}

// opt 里存放特定请求需要的参数,如url等

getUser (opt) {

return new Promise((resolve, reject) => {

$.ajax({

headers:{

token:this.token

},

url:opt.url,

data:opt.data,

success:function(data){

resolve(data);

},

error:function(error,status){

reject(error);

}

})

})

}

//其他API定义区

...

}

2、进一步封装特定API(使用异步函数)

这一步一般是在特定的需要调用某API时用到

// const api = new Api(token)一般会提前执行,比如在vue组件script的import和export default之间执行,这也是为了避免该语句在每个具体api里都执行一次。

// 在vue中,可以将该函数放在methods里

async function loadUserData (opt) {

try{

const user = await api.getUser(opt);

// 根据user状态执行业务逻辑

...

}catch(e){

// 请求异常的处理逻辑

}

}

第三步:使用API

// 在vue中,可以将该代码放在mounted里

loadUserData(opt)

经过这三步,基本就实现了无回调,无then链式调用和轻松处理错误这几个比较烦人的问题啦!

参考

类似ajax封装函数,JS 封装一个async式的AJAX函数相关推荐

  1. R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战

    R语言attributes函数(获取属性.设置属性).attr函数(改变一个属性).structure函数(改变数据形状)实战 目录

  2. C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是

    原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0.在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是不是 ...

  3. 高阶函数、js函数内返回一个内部函数详解---->函数柯里化

    高阶函数 如果一个函数符合下面2个规范中的任何一个,那该函数就是高阶函数. 若A函数,接收的参数是一个函数,那么A就可以称之为高阶函数. 若A函数,调用的返回值依然是一个函数,那么A就可以称之为高阶函 ...

  4. 原声ajax的函数式封装,原生 js 封装 ajax的两种方式(get,post)

    /*ajax封装 @param option:传入一个对象 属性分别为(顺序可以打乱): url:请求的路径 type:请求的不同类型get或post data:发送的数据,格式:key1=value ...

  5. 【js封装】js封装自己的公共方法,以后方便调用

    从事前端开发快一年了,很多东西都是不系统的,尽管保存,但是调用还需要去找,浪费时间,所以我要封装一个文件,直接引入文件,调用省事省时间. 正文: 首先我想到有两种封装方法,一个是prototype,另 ...

  6. html表单实现ajax登陆,node.js+jQuery实现用户登录注册AJAX交互

    最近实现了Node.js当作后台,jQuery写前台AJAX代码的,实现用户登录和注册的功能,刷新了前后端交互的三观.特记录一下. 1.login.ejs实现form框架 用户名 密码 form不加m ...

  7. 第六章函数,编写一个判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找出n以内所有的水仙花数。(水仙花数指3位数的各个数字的立方和等于这个三位数本身)。

    例子:380 153 #include<stdio.h> #include<math.h> int main() {int n;printf("输入一个三位数:&qu ...

  8. c语言若对函数未加,【单选题】C 语言程序中,若对函数类型未加显式说明,则函数的隐含说明类型为A. void B. double C. int D. char...

    参考答案如下 要修改已输入文本的字号,单选对函的隐在选择文本后,单击______按钮后,可选择字号. A) 加粗 B) 新建 C) 字号下拉式列 ()栏位于PowerPoint 2007主窗口的底部, ...

  9. MATLAB不定积分的运算,matlab中怎么把积分函数 int 得到的不定积分式代入 solve 函数中进行计算?...

    答:syms r x fun=int(r*exp(-2*(r/2)^2),r,0,x); x=solve(fun-0.5) x = 2^(1/2)*log(2)^(1/2) -2^(1/2)*log( ...

最新文章

  1. elasticsearch 文档操作
  2. 利用gevent实现异步执行任务
  3. 文本主题模型之非负矩阵分解(NMF)
  4. 【收藏】GeoMesa整体架构模块介绍、创建Schema并导入数据
  5. boos::reverse_iterator相关的测试程序
  6. SAP UI5 aggregation field type
  7. 小程序 报错errMsg: “hideLoading:fail:toast can‘t be found“ ?
  8. 将职业教育职业化 - 各IT培训中心必须完成的使命
  9. (原創) Verilog入門書籍推薦:Verilog數位電路設計範例寶典(基礎篇) (IC Design) (Verilog)...
  10. 我的世界启动时要Java_我的世界启动时Java出现日志怎么办
  11. 《少有人走的路1:心智成熟的旅程》第一部分:自律 - 问题和痛苦
  12. 光栅图形学(一)——直线段的扫描转换算法
  13. 我的人生历程之第一篇:游戏篇(b)
  14. OpenGL BRDF和IBL渲染
  15. JimuReport积木报表打印多出一页空白页问题(解决方案)
  16. 示波器表笔旁边的夹子是什么_示波器探头的地线夹子应该要靠近测量点
  17. python qqplot 检验正态分布
  18. OECD富裕经济体系通胀飙升至 25 年高位-全球薪资停滞不前
  19. 在Deepin Linux折腾出来Fuji xerox DocuPrint M115b 打印机驱动
  20. 实验1Java编程基础

热门文章

  1. C51存储器类型与51单片机的物理区域
  2. Oracle Database Appliance
  3. [剑指offer]面试题第[50]题[JAVA][第一个只出现一次的字符][哈希表][HashMap]
  4. CodeForces-887B 技巧DFS
  5. php 汉字分割,php支持中文字符串分割的函数
  6. gtest测试框架使用详解_测试框架TestNG使用介绍
  7. python运行是哪个键_python – 如何使用回车键调用按钮命令
  8. python实现多人聊天udp_python—多任务版udp聊天机器人
  9. python爬虫高级项目管理师培训学校_推荐一条高效的Python爬虫学习路径!
  10. textureview 旋转90度后平铺_C++初级编程NOIP题:11H1537: 图像旋转