我刚刚读了一篇关于Promise的文章,无法理解我们如何通过Promise使用Axios进行多个API调用。all
因此,假设有3个URL,我们将其命名为
let URL1 = "https://www.something.com"
let URL2 = "https://www.something1.com"
let URL3 = "https://www.something2.com"
以及一个用来存储Value的数组
let promiseArray = []
现在,我想并行运行这个程序(Promise.all
),但是我不知道我们该怎么做?因为axios本身就有一个承诺(或者至少我是这样使用它的)。
axios.get(URL).then((response) => {
}).catch((error) => {
})
**问题:**有人能告诉我如何使用promise.all和axios发送多个请求吗
8条答案
按热度按时间eufgjt7s1#
axios.get()
方法将返回一个promise。Promise.all()
需要一个promise数组。例如:好吧,那么...
你可能想知道
Promise.all()
的响应值是什么样的,那么,你可以通过快速浏览一下这个例子来轻松地自己计算出来:如欲了解更多信息,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
i34xakig2#
fetchData(URL)
函数发出网络请求,并返回状态为待定的承诺对象。Promise.all
将等待,直到所有的承诺都解决或任何承诺被拒绝。它返回一个承诺和解决响应数组。第一个
bnlyeluc3#
您仍然可以使用
promise.all
,并将promises数组传递给它,然后等待所有promises得到解析或其中一个promises被拒绝。v2g6jxz64#
只是为了补充已批准的答案,axios也有
Promise.all
的形式,它期望一个承诺列表,并返回一个响应数组。8i9zcol25#
希望这对你有帮助
fafcakar6#
使用
Promise.allSettled
,它几乎与Promise.all
相同,但如果任何承诺被拒绝,它不会作为一个整体拒绝。Promise.allSettled
只是等待所有承诺得到解决,而不管结果如何。结果数组具有:
{ status:"fulfilled", value:result }
表示成功响应{ status:"rejected", reason:error }
表示错误。tvz2xvvm7#
应该可以这样做:
zfycwa2u8#