当用户浏览应用程序时,在回发中保持JavaScript setTimeout函数调用

时间:2017-11-12 03:15:51

标签: javascript jquery html asp.net asp.net-core

我相信我可以使用以下函数来创建延迟的JavaScript警报:

setTimeout(), clearTimeout(), setInterval() and clearInterval()

但我如何在回发中使用它们。例如:

用户有一个存储在数据库中的提醒列表。当用户登录网站时,我可以访问这些提醒并拨打以下内容:

setTimeout(function() { alert("Reminder 1"); }, 10000);

取决于提醒截止日期/时间。

然而,当用户在警报通知发生之前切换页面时,我相信setTimeout调用将不会持续存在。

唯一的方法是让它在每个回发中查找用户提醒并在每个页面或某种母版页上执行setTimeout吗?

1 个答案:

答案 0 :(得分:1)

这不是真正的方法。如果您尝试构建某种通知系统,那么理想情况下它应该是服务器端。

在正常的多页网站中,每次呈现页面时,服务器都会检查通知,然后在模板中呈现警报或某些UI功能,告诉用户他们有通知。

该设置将不会处于活动状态,IE如果在服务器上发布新通知,则客户端页面将不知道该通知。除非您使用通知消息api,例如pubnub。

pubnub这样的东西可以让你把信息发送到你的页面,并且在你的JS代码中得到一个回调,所以你可以在你的dom中渲染它。

由于您有多页应用,因此您需要在每个页面渲染上获取/请求通知。运行超时触发提前时刻并不是一个理想的解决方案。

另一种方法是每隔5分钟从您的js代码中查询您的服务器,并要求通知。

对所有重复的服务器调用都有价格标签。最好的办法是使用像pubnub这样的东西,但需要额外的代码服务器端才能使它工作。