React-native应用从IOS上的挂起状态恢复后,抓取冻结

时间:2018-10-03 09:08:51

标签: ios iphone react-native fetch react-native-ios

我正在开发一个本机应用程序,我们注意到了一些奇怪的事情。当应用从暂停状态恢复时(我认为这不是从正常的后台状态发生),提取通常会随后冻结。

要触发它,请戴上节电开关(我认为这会使应用更快进入暂停状态),然后将其置于后台,在手机上做一分钟或5到10分钟,再次打开该应用程序并使用它。

在我们的案例中,我们导航到另一个屏幕,该屏幕试图同时从后端获取三个对象列表。在后端,我们注意到只有一个呼叫通过,三个呼叫中的Promise.all(...)从未得到解决或捕获。因此也没有错误。之后,所有呼叫再次起作用,问题似乎消失了。因此,这是一个一次性的问题。

当不是从挂起状态进入时,这永远不会发生。

这很难调试,因为当应用程序进入挂起状态时,调试器将断开连接。

我们尚未在Android上对此进行测试,可能是该问题也存在。

我的直觉告诉我,它与IOS的内部网络或RN的获取库有关。 (例如,重新连接到wifi,来自4G或其他设备)

某人是否已经遇到过相同的问题,或者对为什么会发生或如何解决有更多的见解? (例如,使用一种我想防止的超时和重试机制,将状态更改的api调用强制为有效-尽管react-native不能检测到已暂停的状态)

谢谢!

编辑:

忘记添加:我们正在使用react-native 54,但是正在更新到57。如果问题仍然在57上发生,我会报告。

编辑2: Atm,我们通过依次执行而不是同时执行调用来解决了该问题(因此fetch()。then(fetch()。then(fetch()))似乎可以解决此问题。同时执行呼叫,只有在应用程序处于暂停状态后,才能正常失败。

0 个答案:

没有答案