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

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

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

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

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

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

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

取决于提醒到期日期/时间。

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

使其工作的唯一方法是在每次回发时查找用户提醒并在每个页面或某种母版页中执行 setTimeout 吗?

最佳答案

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

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

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

类似于 pubnub可以让你将消息发送到你的页面,并在你的 JS 代码中获得回调,这样你就可以在你的 dom 中渲染它。

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

另一种方法是通过 js 代码轮询服务器(例如每 5 分钟一次)并请求通知。

所有这些重复调用您的服务器都有一个价格标签。最好的选择是使用类似 pubnub 的内容。但这需要额外的服务器端代码才能使其工作。

关于javascript - 当用户浏览应用程序时,在回发中保留 JavaScript setTimeout 函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47245096/

相关文章:

javascript - 在 Javascript 中检测 FireFox 的鼠标按钮

javascript - 仅为可见元素插入编号

javascript - JQuery:使隐藏的跨度可见并闪烁

javascript - 当我点击打印按钮时隐藏 <td>

javascript - 我在合并 HTML 和 JavaScript 时遇到问题

javascript - 删除按钮事件的 Action 并创建另一个事件

php - 如何存储在客户端机器上并重复使用 php/mysql 查询?

javascript - 无法将 Cordova 插件添加到我的 PhoneGap 项目

jquery - 带有 jQ​​uery 的 cookies

javascript - 键入时保留输入的占位符文本