Promise.all for array.map with axios
Promise.all for array.map with axios
我想做的事情:
我有一系列书名。例如
var bookTitleArray = ["1984", "clockwork Orange"];
对于这个数组,我想通过 axios 调用 API 并获取每个标题的详细信息。
到目前为止我做了什么:
为此,我创建了一个 array.map 请求,它调用包装到异步函数中的 axios。
axios 异步函数如下所示:
async function axiosWrapper (Item){
var ItemPromise = axios.request({
url: 'some URL',
method: 'get',
baseURL: 'some URL',
headers: {
'Authorization': 'some authorization'
}
})
var axiosResult = await ItemPromise;
return axiosResult
}
我有 console.logged axiosResult,它返回正确的数据。因此 axios 似乎有效
与 promise.all 的异步如下所示:
async function mapWrapper(ArrayToRunThrough){
var promiseArray = ArrayToRunThrough.map(Item => {
axiosWrapper(Item)
})
var ArrayOfResults = await Promise.all(promiseArray);
console.log(ArrayOfResults);
}
最后我用我想搜索的书籍数组调用 mapWrapper
mapWrapper(bookTitleArray)
我的经历: 不幸的是我只得到两个数组 "undefined"。
我的假设: 我假设 Promise.all / await 没有按预期工作。
我需要帮助的地方:如何在 "ArrayOfResults" 中的此设置中从 Axios API 调用中获取实际值?
您不会在 map
中返回 axiosWrapper
。
你应该这样做:
async function mapWrapper(ArrayToRunThrough){
var promiseArray = ArrayToRunThrough.map(Item => {
return axiosWrapper(Item)
})
var ArrayOfResults = await Promise.all(promiseArray);
console.log(ArrayOfResults);
}
我想做的事情: 我有一系列书名。例如
var bookTitleArray = ["1984", "clockwork Orange"];
对于这个数组,我想通过 axios 调用 API 并获取每个标题的详细信息。
到目前为止我做了什么: 为此,我创建了一个 array.map 请求,它调用包装到异步函数中的 axios。
axios 异步函数如下所示:
async function axiosWrapper (Item){
var ItemPromise = axios.request({
url: 'some URL',
method: 'get',
baseURL: 'some URL',
headers: {
'Authorization': 'some authorization'
}
})
var axiosResult = await ItemPromise;
return axiosResult
}
我有 console.logged axiosResult,它返回正确的数据。因此 axios 似乎有效
与 promise.all 的异步如下所示:
async function mapWrapper(ArrayToRunThrough){
var promiseArray = ArrayToRunThrough.map(Item => {
axiosWrapper(Item)
})
var ArrayOfResults = await Promise.all(promiseArray);
console.log(ArrayOfResults);
}
最后我用我想搜索的书籍数组调用 mapWrapper
mapWrapper(bookTitleArray)
我的经历: 不幸的是我只得到两个数组 "undefined"。
我的假设: 我假设 Promise.all / await 没有按预期工作。
我需要帮助的地方:如何在 "ArrayOfResults" 中的此设置中从 Axios API 调用中获取实际值?
您不会在 map
中返回 axiosWrapper
。
你应该这样做:
async function mapWrapper(ArrayToRunThrough){
var promiseArray = ArrayToRunThrough.map(Item => {
return axiosWrapper(Item)
})
var ArrayOfResults = await Promise.all(promiseArray);
console.log(ArrayOfResults);
}