我在同一页中有两个素数面轮询。
其中之一(pollLg
(具有较长的间隔时间(30秒(,而另一个(pollSm
(具有较小的间隔(8秒(。
当pollLg
启动时,我希望pollSm
"暂停",然后在pollLg
完成任务后继续(记住中断的时间(。
如果我在pollLg
任务中调用PF('pollSm').stop()
和PF('pollSm').start()
,那么pollSm
将在8秒后再次执行。
例如,当网页打开时,我有:
pollSm executions: 8sec, 16sec, 24sec (pollLg will execute here and stop pollSm)
当pollLg
完成时,pollSm
将仅在8秒后执行,而不是在2秒后执行(它被中断了6秒(
有什么简单的方法可以做到这一点吗?
让我首先声明PrimeFaces源代码是开放的,可以很容易地用于检查(可能是未记录的(功能。我做到了,并注意到你在PrimeFaces中不容易做到这一点,因为它的民意调查组件有一个内置功能。在组件的javascipt源代码中,您可以看到它使用了纯javascript定时器。
因此,我开始搜索是否可以用简单的javascript轻松地做到这一点,并注意到那里也没有简单的功能。幸运的是,StackOverflow中已有一个关于暂停/恢复javascript中计时器的问答,它甚至有一个关于重复计时器的答案。
如果您将其与覆盖(或扩展(PrimeFaces小部件相结合,就可以实现您想要的功能。