首页 > 解决方案 > 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。

更新

标签: react-nativeaxiosfetch

解决方案


正如 Evert 所指出的,这是服务器的问题。服务器阻止其他 API 同时执行。


推荐阅读