axios 并发问题

发布于 2022-09-04 08:28:33 字数 455 浏览 17 评论 0

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

上面是官网的并发案例,但如果我想将一个含有N个请求链接的数组 [],该如何使用 axios 的并发呢?

let urls = [url1, url2, ...]

返回的结果最好也能是一个同样顺序的数组。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

心安伴我暖 2022-09-11 08:28:33

其实这个就是 Promise.all 的包装形式,直接用 Promise.all 来实现就可以了,完全能够满足你的需求。

坏尐絯 2022-09-11 08:28:33

按你的描述,需要先把请求链接的数组转变成对应的 axios 请求的数组,也就是将一个数组中的每个元素转化在成另一种形式,用什么办法呢?当然是要用数组的 map 方法。可以尝试下面的做法:

let urls = ['/user/12345', '/user/12345/permissions'];
let requests = urls.map(makeRequest);

// 把指定的 url 转变成 axios 请求,返回的是 Promise 对象
function makeRequest(url) {
    return axios.get(url);
}
axios.all(requests)
    .then(axios.spread(function (acct, perms) {
        // Both requests are now complete
    }));
逆蝶 2022-09-11 08:28:33
axios.spread((res1, res2) => {
   // 你的逻辑
   // res1 res2 分别为你请求的返回值  
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文