javascript - 从动作中反应 .map() 函数内的异步 API 调用
问题描述
我是 React JS 的新手。在我的应用程序中,我面临需要使用不同的 url 多次调用 API 的情况,例如 apiurl.com/abc、apiurl.com/xyz。这些 abc 和 xyz 存储在一个数组中。因此,我想使用 .map() 更改 url 以进行多个 api 调用。但是在 .map() 中,异步等待是行不通的,所以如果有的话,请寻找一些解决方案。我已经经历了一些可能的解决方案,比如承诺,但无法实施。
这是我的代码:
export const someAction = () => async (dispatch, param) => {
let myArray = ["abc", "xyz"];
let id= "";
param1 = "someauthcode";
myArray.map((x) => {
id = x;
const myResponse = await loaders.myResponseApi(param1, id); *//This does not work as await should be in async call*
});
dispatch({ type: types.ARRAY_API, payload: myResponse });
}
所以想法是使用 apiurl.com/abc、apiurl.com/xyz 进行 2 次 api 调用。我在不同的文件中构建了 url (apiurl.com)。
提前致谢。
解决方案
将您的数组变成一组承诺,然后使用Promise.all
export const someAction = () => async(dispatch) => {
try {
const payload = await Promise.all(myArray.map(id => loaders.myResponseApi(param1,id)));
dispatch({type:types.ARRAY_API,payload});
} catch(err) {
// an error occurred in at least one of the promises
}
}
推荐阅读
- javascript - 获取 JSON 数据并在函数中显示为变量
- spring-data-mongodb - Spring Boot WebFlux Reactive MongoDB:如何在每个请求上切换数据库?
- r - 如何在 R 中的同一图上绘制线性回归模型和泊松回归模型?
- php - 如何修复错误解析错误:语法错误,Cell.php中的意外'='
- python-asyncio - Asyncio:将返回值附加到列表
- c - fnc(3) 中的 (3) 是什么意思?
- python - 在屏幕上搜索图像花费的时间太长
- list - 编译时强制有限列表
- python - 计算数据框中所有列的连续值高于阈值
- tensorflow - 如何向 Huggingface 预训练的 ALBERT 模型添加更多层?