此链接将帮助您
https://github.com/facebook/react-native/issues/12981#issuecomment-499827072
代码(来自此处:firebase/firebase-js-sdk#97(评论))简单地包装了 setTimeout(全局)函数,以防止它被长时间使用。
在我们修改的 global.setTimeout 函数中,如果持续时间大于阈值 MAX_TIMER_DURATION_MS,我们将一个 id 保存在本地映射 (timerFix) 中,然后调用 runTask 将持续时间拆分为更小的值。runTask 使用较小的块设置超时(使用原始 _setTimeout),这些块将连续执行,直到waitingTime 太小。当waitingTime 足够小时,我们调用React Native 的runAfterInteractions 来平滑执行,同时,我们从本地映射中移除id 条目,因为在这种情况下我们不会再次调用_setTimeout。请注意,afterTime 被送入 _setTimeout 以防止它被长时间调用。
否则,在我们修改的 global.setTimeout 函数中,如果持续时间小于阈值 MAX_TIMER_DURATION_MS,我们直接调用全局 setTimeout(保存在 _setTimeout 中)。
全局 clearTimeout 也被包装以通过从本地地图中删除 id 来执行清理过程。