有三种实现方式:
1、axios本身属于Promise,利用函数式的then获取请求返回结果,也是最常用的,如下:
request({
url: '/test/XXX/XXXX',
method: 'post',
data: param
}).then(ret => {
if (ret.code === RESULT_CODE.SUCCESS) {
this.$message.success('保存成功')
}
})
此处request对象是对axios做了一层封装,不用在意。此种方式的缺陷是:只能用于请求返回后只有简单操作的情形。如果返回后的操作比较多,代码就会显得臃肿,可读性差,还有一种情况,即该请求被调用的情况,由于axios没有配置为同步请求的配置项,因此无法直接将上述代码封装后直接调用,因此,引申出第二种方法:
2、async结合await
// api.js文件
// test1方法作为被调用方,被test1方法调用
export async function test1 (param) {
// 返回一个Promise对象,真正需要返回给调用方的数据,放在resolve中
return new Promise(resolve => {
// request对象是对axios的封装,不用在意
request({
url: '/emr/order/deleteOrder',
method: 'post',
data: order
}).then(ret => {
resolve(ret.data)
}
})
})
}
// VUE文件
methods: {
// test2作为调用方调用test1方法
async test2 (param) {
const data = await test1(param)
}
}
3、引入jquery
此处就不写了,这种方式感觉挺没追求的。