首页 > 解决方案 > 在 iOS 模拟器中 React-Native Fetch + 解析 JSON 抓取,但在远程调试中即时

问题描述

我正在运行一个反应本机应用程序,v56。在根级组件的主构造函数中,我对本地服务器进行 fetch() 调用,如下所示:

  getStatus = () => {

    let url = this.getEnvUrl();

    return fetch(url)
      .then(res => (_.get(res, 'status', 500) == 200)
        ? res : Promise.reject('Fetch had a non-200 response.'))
      .then(res => res.json() )
      .catch(err => Promise.reject(err));
  }

当我在 iOS 模拟器中运行它时, res.json() 在解析之前会挂起 10-15 分钟(或更长时间)。当我的机器开始消耗我的 Macbook 资源时,它开始“起飞”。

相反,如果我打开远程调试,它几乎会立即运行 response.json()。如果我改为运行 response.text() ,它也是立即的。

我想知道这是否是模拟器的问题,通过启用远程调试,JS实际上是在浏览器中运行的,因此效率更高,或者资源更多?我的 API 的 json 是相对嵌套的,但我在 PRODUCTION 上运行它没有问题,无论是 Chrome,还是在我的 iPhone 上的 Safari 中运行,请求更大。

当我环顾四周时,我看到了启用远程调试导致 .json() 性能下降的旧问题,但我的问题恰恰相反:当我没有远程调试时,它会占用我的机器,并且因为什么而流失感觉好像还有半小时才解决。

我的版本是: - React 16.3.1 - React Native:0.55.4 - 节点:9.1.0

有人知道吗?

标签: iosjsonreactjsreact-native

解决方案


除了上面发布的代码之外,还有很多 console.log 条目吗?有时 iOS 可能会被它们困住。


推荐阅读