首页 > 解决方案 > Primefaces 一项民意调查“暂停”另一项民意调查

问题描述

我在同一页面中有两个 primefaces 民意调查。

其中一个 ( pollLg) 的间隔时间较长(30 秒),而另一个 ( pollSm) 的间隔时间较短(8 秒)。

开始时pollLg,我想pollSm“暂停”,然后在pollLg完成任务后继续(记住它被中断的时间)。

如果我调用PF('pollSm').stop()PF('pollSm').start()内部pollLg任务,pollSm只会在 8 秒后再次执行。

例如,当网页打开时,我有:

pollSm executions: 8sec, 16sec, 24sec (pollLg will execute here and stop pollSm)

完成pollLg后,pollSm将仅在 8 秒后执行,而不是 2 秒(它被 6 秒中断)

有什么简单的方法可以做到这一点吗?

标签: jsfprimefaces

解决方案


让我首先声明 PrimeFaces 源是开放的,可以很容易地用于检查(可能是未记录的)功能。我做到了,并注意到您不能在 PrimeFaces 中轻松做到这一点,因为它的投票组件具有内置功能。在组件的 javascipt 源代码中,您可以看到它使用纯 JavaScript 计时器。

所以我开始搜索你是否可以用普通的 javascript 轻松地做到这一点,并注意到那里也没有简单的功能。幸运的是,StackOverflow 中有一个关于在 javascript 中暂停/恢复计时器的现有 Q/A,它甚至有一个关于重复计时器的答案。

如果将此与覆盖(或扩展)PrimeFaces 小部件相结合,您可以实现您想要的。


推荐阅读