axios如何同步请求

我有很多个请求,会一次性全发出去,然后全部为等待状态,造成代码异步。请问怎么把axios请求改为同步的,也就是一个请求完成,再发送下一个请求?图片描述

图片描述

我需要的是,这些请求全部请求完了,再返回一个list给我,里面包含所有的result
注:请求数量不确定,参数也都不确定,现在是for循环去请求的。

阅读 82.2k
8 个回答

使用axios.all可以实现当多个ajax请求全部完成的时候,才触发回调。参考:https://www.npmjs.com/package...

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // Both requests are now complete 
  }));

axios根本不支持同步请求

promise呀

现在可以用async/await来做:

async methods(){
    await let a = axios.get(`XXXXX`)
    await let b = axios.get(`XXXXX`)
}
新手上路,请多包涵
function axiosGet() {
    return axios.get('/api/your-special-url/', {
        params: {
            id: this.id,
        }    
    })
    .then((response) => {
        console.log(response.data);
        this.valid = response.data.unique;    
        return this.valid;
    })
}

this.axiosGet()
.then((valid) => {
    if(valid) {
        console.log('axios get request over, and return valid to the sync code.')
    }
})

虽然不支持同步,但可以用Promise来处理调用成功后的回调

一个请求成功了之后你在回调里面发下一个请求啊。

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