我正在运行React Native应用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()降低性能,但问题却恰恰相反:当我没有进行远程调试时,它会吞噬我的机器,并为之烦恼感觉像一个半小时才解决。

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

有人在这里有想法吗?

最佳答案

除了上面发布的代码外,还有许多console.log条目吗?有时,iOS可能会陷入困境。

关于ios - React-Native Fetch +在iOS Simulator中解析JSON爬网,但在远程调试中即时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54163326/

10-13 04:07