我有一个数组,可以说是 fruits ,其中包含n个值。现在,我想使用数组中的值生成一个新的URL,并通过axios concurrency功能发送并发请求。从那以后,他们更新了此功能,并弃用了旧的处理方式。
我用谷歌搜索,但是我的问题没有解决。博客建议通过axios为我对服务器的每个请求创建一个新功能。但就我而言,请求数取决于数组的值(最大限制)。有时我只想发送一个请求,有时只发送三个。
答案 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())