做前后台交互时会经常用到 ajax,有时候会遇到这样的情况,我们在 a 方法中调用 b 方法,b 方法里是一个 ajax,成功请求后会返回一个结果 data,而我们希望通过 b 方法的返回值获取到 data,我们的代码可能是这样的:
function a() {
var data = b();
}
function b() {
$.ajax({
type : "GET",
url : "",
dataType : "json",
success : function (data) {
return data;
}
});
}
上面的return结果只会返回给success,还不是b方法的返回结果。
下面配合async和await,创建一个新的Promise对象(由于axios在封装时没有返回一个Promise对象),在success方法中resolve结果。
async onBlur(){
var response=await new Promise((resolve,reject)=>this.$axios({
url: `/proxy_version/renew/versionNumber`,
method: 'get',
params:{
versionNumber:this.formdata.versionNumber
},
success: (result) => {
// this.$message.success("操作成功!");
resolve(result.data);
}
}));
return response;
}