axios支持同步方法吗?

// 首先定义了一个同步方法
async checkProjectAbbreviationExists(params) {
    return await axios.get(`/by/ProjectPage/checkProjectAbbreviationExists`, {params});
}
// 此处调用同步方法,但是没法实现同步效果
checkProjectAbbreviationExists: function () {
   let p = service.checkProjectAbbreviationExists({
          formId: this.infoForm.formId,
          name: this.infoForm.name,
   });

    p.then((data)=>{
        console.log("------2------------");
        return false;
    });

    console.log("---------1--------");

    return true;
}

// 结果:先输出1,再输出2

我这边需要实现一个同步方法,但是axios好像无法实现这种效果

我需要获取请求返回的数据,就必须使用then,那就变成异步的了

阅读 4k
2 个回答

axios 不支持同步,他就是异步方案。
async/await 也是异步方案。

如果你要完成的功能是按顺序回调,那就使用:

 p.then((data)=>{
        console.log("------2------------");
 }).then(()=> console.log("---------1--------"));

其他的 可以考虑使用ajax 把async配置项改为false,就能实现同步

 checkProjectAbbreviationExists(params) {
    return axios.get(`/by/ProjectPage/checkProjectAbbreviationExists`, {params});
}

async checkProjectAbbreviationExists: function () {
   let p = await service.checkProjectAbbreviationExists({
          formId: this.infoForm.formId,
          name: this.infoForm.name,
   });
    console.log(p,"------2------------");
    console.log("---------1--------");

    return true;
}

这样写,p就是接口返回的数据

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题