【问题标题】:What could be causing this slow fetch in react native?什么可能导致反应原生的这种缓慢获取?
【发布时间】:2016-07-15 17:15:33
【问题描述】:

在下面的代码中,第一条 console.log 消息几乎立即打印出来。然后一切都挂起(我最初假设它正在等待返回响应的主体)。响应的 Body 只有 26K 左右,等待的时间似乎是无限的,除非我摇晃手机和调试菜单进行交互。一旦我与调试菜单交互,promise 就解决了,一切都按预期进行。我与调试菜单的交互可以很简单,比如隐藏检查器、显示检查器,只需要一些东西来启动承诺解决方案,一切都很好。

fetch(SEARCH_URL, requestBody)
    .then((response) => {console.log(response); return response.json();})
    .then((responseData) => {
        debugger
        ...

注意: 与调试器断开连接并运行代码不会表现出缓慢(并且未连接到调试器会忽略调试器语句)

是的,我已经重新启动了计算机。

可能在https://github.com/facebook/react-native/issues/6679中找到了一些东西

【问题讨论】:

  • 我遇到了同样的问题。使用react-native v0.24.1,它只发生在 Chrome 调试中。我认为这与您链接到的问题 6679 无关。我认为它与 Chrome 特定的异步调度或 setTimeout 和 fetch/promise 实现有关。请记住,在 Chrome 中调试时,您的 RN 应用程序的 JS 完全在浏览器中运行。有垫片和库可以使两个环境的行为相同。我认为其中一件作品有问题。这可能是在 RN Facebook 群组上提出的一个好问题。
  • @sstur 是对的,这是因为 Chrome 调试。禁用 chrome 调试,你的性能又好了。
  • @gre:是的,我们可以禁用 Chrome 调试并再次获得良好的性能。但这完全是一个错误。最好能找到它,看看到底是什么原因造成的,这样就可以计划修复。也许 RN 的 GH 问题是合适的。不确定。
  • 这肯定是一个错误,请参阅上面的问题链接。
  • 我发现让我的应用程序更具响应性的方法是在单独的函数中处理响应,并使用 setTimeout 调用以 10 毫秒或其他时间调用该函数。因为它发生在后台(有点),所以我的应用程序响应速度更快。对我来说,似乎必须将加载时间从 6 秒减少到大约 3 秒。

标签: react-native


【解决方案1】:

正如您自己发现的,这是 should be fixed in react-native v0.31 的一个已知错误

【讨论】:

  • 已经承诺在 0.24 之后的几乎每个版本中都会修复它,所以不要屏住呼吸。
  • 它也在 rn39 上发生
【解决方案2】:

对我有用的是在反应组件的构造函数中移动 fetch 调用。否则他们永远不会解决。希望这会有所帮助

【讨论】:

  • 这可能是评论而不是答案
【解决方案3】:

当启用远程调试时,解析响应可能会严重滞后,这是一个已知错误。禁用远程调试应该会加快速度。

您可以read the issue 了解详情和其他解决方法。

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多