如何使用Axios发送N个并发请求

时间:2020-09-10 11:00:32

标签: node.js axios

我有一个数组,可以说是 fruits ,其中包含n个值。现在,我想使用数组中的值生成一个新的URL,并通过axios concurrency功能发送并发请求。从那以后,他们更新了此功能,并弃用了旧的处理方式。

我用谷歌搜索,但是我的问题没有解决。博客建议通过axios为我对服务器的每个请求创建一个新功能。但就我而言,请求数取决于数组的值(最大限制)。有时我只想发送一个请求,有时只发送三个。

1 个答案:

答案 0 :(得分:3)

我会做sp00m在他的评论中建议的事情:

将数组映射为promise并使用Promise.all来解决它们

const fruits = ['Banana', 'Orange', 'Apple']

const promiseArray = fruits.map(fruit => {
  return axios.get('/fruits/' + fruit).then(res => res.json())
})

Promise.all(promiseArry)
  .then(allresults => {
    console.log('got everything')
    console.log(allresults)
  })
  .catch(err => {
    console.log('one of the promise failed')
  })

..或者如果要按顺序发送它们,则一一发送。

将数组映射到promise函数,然后将其简化。

const fruits = ['Banana', 'Orange', 'Apple']

const promiseFunctions = fruits.map(fruit => {
  return () => axios.get('/fruits/' + fruit).then(res => res.json())
})

promiseFunctions.reduce((p, fn) => p.then(fn), Promise.resolve())