gpt4 book ai didi

javascript - 如何在客户端不在页面上的情况下运行 javascript 函数

转载 作者:行者123 更新时间:2023-12-03 02:43:19 25 4
gpt4 key购买 nike

我有一个 settimeout 函数,当该用户的时间用完时,它基本上会从我的数据库中删除一个对象。但是,这只在客户端导航到该页面时才有效,因为此时 settimeout 函数运行。这是一种错误,因为假设用户导航到我的页面,调用 settimeout 并开始倒计时,但如果用户现在导航到不同的页面或关闭 Web 应用程序,即使用户的时间已用完, settimeout 函数不会继续并从数据库中删除对象,除非用户返回到同一页面,此时 settimeout 函数将再次被调用并检测到时间已用完,然后它将继续并删除来自数据库的对象。

我怎样才能让javascript函数保持运行,基本上是离线的?因此,settimeout 函数应该从我的数据库中删除该对象,而无需用户导航到该页面

最佳答案

一个简单而有效的解决方案是将创建该数据库对象的时间与该对象一起存储。例如,如果您要在数据库中存储 Cat 对象,请在该对象上存储创建该对象的时间戳字段。

每当用户尝试访问数据库对象时,将当前时间与存储的对象时间(最好在服务器上)进行比较。如果耗时长于对象应生存的时间,则删除该对象。一些伪代码:

if (currentTime() - object.creationTime >= lifeTime)
object.destroy();

这也解决了提问者在问题评论中提到的有关显示“剩余时间”UI 元素的问题,因为此创建时间也可以发送到客户端(与对象一起),并且客户端可以执行相同的过程查找自对象创建以来已经过去了多长时间,以确定该对象还剩多长时间。

<小时/>

还建议有一些过程偶尔检查数据库中是否有过期的对象,以确保永远不会回来的客户端在这些对象应该过期​​时不会在数据库中留下永久对象。

关于javascript - 如何在客户端不在页面上的情况下运行 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com