【问题标题】:setTimeout is unreliable on Chrome in Android when out of focus - any solutions?当失焦时,setTimeout 在 Android 中的 Chrome 上不可靠 - 任何解决方案?
【发布时间】:2023-01-09 04:31:57
【问题描述】:

我有一个网络应用程序,基本上可以看作是一个消息传递系统——人们可以提交一条消息,而其他人可以接收它。这一切都通过 AJAX 进行,Javascript 前端与 PHP 后端交互。所有这些都工作得很好,没有问题。

我还实现了通知系统,该系统在收到新消息时向桌面或 Android 应用程序发送推送通知。这也完全正常。

通知系统使用 setTimeout 定期检查 PHP AJAX 系统。但这就是交易中断问题出现的地方。

当注意力不集中在 Android 上时,settimeout 变得完全不可靠 - 有时它会起作用,有时它根本不起作用,有时它会很晚。

为了解决这个问题,我随后将所有内容都移到了支持人员中,因为我认为它可以独立于浏览器的焦点工作,但这更糟糕 - 似乎它甚至比在浏览器上运行 settimeout 更不一致。

那么有什么方法可以纠正这个问题吗?我可以在 supportworker 中放置一些特殊指令以使其不休眠吗?

谢谢你。

【问题讨论】:

    标签: javascript android settimeout


    【解决方案1】:

    此 API 不保证计时器将完全按计划运行。由于 CPU 负载、其他任务等导致的延迟是可以预料的,这可能导致实际延迟可能比预期的更长。

    您可以在MDN 上阅读更多关于setTimeout 延迟的信息以及延迟时间可能更长的原因。

    如果您需要即时消息传递之类的功能,您应该研究用于此类功能的体系结构和协议。像 WebSockets 这样的带有事件的东西更适合这个用例。

    【讨论】:

      猜你喜欢
      • 2016-06-17
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2015-10-25
      • 2011-10-29
      • 1970-01-01
      • 2019-04-24
      • 2016-10-12
      相关资源
      最近更新 更多