react-native - React Native - 运行并行 Axios / 获取请求
问题描述
背景:
我有一个必须同时调用多个 API 的 React Native 项目(但在不同的屏幕上)。这是简化的代码。
callAPI(method, address, data, callback) {
console.log("Calling... ", address)
axios({
method: method,
url: address,
headers: {
Accept: "text/html",
"Content-Type": "multipart/form-data"
},
data: data
})
.then(resp => {
console.log("Done... ", address)
callback(resp.data)
})
.catch(err => {
callback({
statusCode: 500,
errCode: "axios error",
errmsg: err.message
})
})
}
this.callAPI('GET', firstURL, null, callback) // Say, this takes 10 seconds to finish
this.callAPI('GET', secondURL, null, callback) // This takes 1 second
理想情况下,无论 firstURL API 是否完成,secondURL API 都应该返回结果。然而,这种情况并非如此。在返回 secondURL 的结果之前,它将等待 firstURL API 完成。
我尝试使用 Axios 或 fetch,但它们都在等待另一个 API 调用完成。
我很困惑,因为我认为 Axios 和 fetch 都是基于 Promise 的?
问题:
如何在 React Native 中并行运行两个或多个 API 调用?
注意:
我不能使用 Promise.all,因为我不需要一起调用这些 API。
更新:
- 我还发现如果 API 的基本 url 不同,它会按预期工作。(例如一个是https://www.test.com另一个是https://test.com)
- 我很确定这是 React Native 的问题,如果我在 jsfiddle.net 上尝试相同的代码,它会按预期工作
解决方案
正如 Evert 所指出的,这是服务器的问题。服务器阻止其他 API 同时执行。
推荐阅读
- spring-boot - 如何使用 RedirectView 在 SpringBoot Rest Api 中传递对象?
- javascript - 带快递的NodeJS:标头未定义
- python-3.x - 加载包含 Lambda 层的 Keras 模型时出现 AttributeError
- python - 发生异常时如何不创建对象(python)?
- c - mod 在这个 DP 问题中是如何神秘有用的,底层算法是什么?
- ruby - 检查块操作的优雅方法?
- react-native - 使用 react-native-swipeout 时如何分隔列表中的行?
- express - 从远程机器读取文件
- c# - 在 asp.net c# 中读取 JSON 动态创建的标头
- android - Android studio google sceneform 工具崩溃