首页 > 解决方案 > Axios 超时在有限的热点上无法按预期工作

问题描述

我正在将 axios 用于我的一个 react native 项目。这是我的配置和执行代码:

const config = {
    method: 'GET',
    headers: {
        'Content-Type': 'application/json',
        Accept: 'application/json',
    },
    timeout: 30000
};
var response = await instance.get(route, config);

这是我的测试场景。我有两部手机,A 和 B。从手机 AI 打开我的 wifi 并创建一个热点。从手机 BI 连接到该热点。现在我打开手机A上的wifi,它有热点。对于电话 B,网络可用,但显示为有限。

现在,如果我使用上述 axios 配置放置 HTTP,对于 Android 设备,它在 30 秒后永远不会超时。但对于 iOS 设备,它按预期工作。为什么?

标签: androidiosreact-nativeaxios

解决方案


它发生在我身上,我通过执行以下操作手动解决了它

   let source = axios.CancelToken.source();
    setTimeout(() => {
      source.cancel();
      // Timeout Logic
    }, 30000);
   const config = {
       method: 'GET',
       headers: {
       'Content-Type': 'application/json',
       Accept: 'application/json',
   },
   timeout: 30000,
   //Add this
   cancelToken: source.token,

 };

推荐阅读