在网络应用程序中,即使我不在网页上,是不是有任何方法可以在特定时间运行功能?
Posted
技术标签:
【中文标题】在网络应用程序中,即使我不在网页上,是不是有任何方法可以在特定时间运行功能?【英文标题】:In web-application, is there any way to run a function at a specific time even if I am not on the webpage?在网络应用程序中,即使我不在网页上,是否有任何方法可以在特定时间运行功能? 【发布时间】:2021-08-22 03:12:12 【问题描述】:class App extends React.Component
state =
seconds: moment().format('HHmmss'),
turned: true,
tick()
this.setState(() => (
seconds: moment().format('HHmmss'),
));
if (this.state.seconds >= '233000' && this.state.seconds <= '234000') //make turned false between 23:30 - 23:40
this.setState(() => (
turned: false,
));
componentDidMount()
this.interval = setInterval(() => this.submitToToday(), 1000);
componentWillUnmount()
clearInterval(this.interval);
submitToToday()
if (this.state.seconds >= '234500' && this.state.seconds <= '235500' && this.state.turned === false)
// HERE MongoDB update that I want to run
this.setState(() => (
turned: true,
));
在这段代码中,我设置为在 23:45 - 23:55 之间运行一次函数“submitToToday()”。
当我在网页上时,这可以正常工作,但当我不在网页上时,这将无济于事。即使我不在网页上,有什么方法可以运行代码吗?
或者,是否可以让托管服务只打开网页?我正在使用 DigitalOcean。
【问题讨论】:
这是 React 代码,这表明它在客户端的浏览器中运行。在这种情况下,当用户不在您的站点时,您不能随意在用户的浏览器中随机运行代码。但是,您可以使用您控制的服务器来实现一个后端,该服务器可以随时运行脚本。 我想你需要后端,因为反应代码只有在浏览器窗口打开时才能工作。 我可以假设用户至少进入了一次页面来初始化例程吗?还是应该完全独立于访问运行例程并仍将结果告知用户? 【参考方案1】:如果它是评论建议的数据库操作,那么最好的方法是在 CRON 作业中。对于 Meteor,只需选择您在 Atmosphere 上最喜欢的 CRON 作业包之一:https://atmospherejs.com/?q=cron 之后,您可以调用 Meteor 方法,该方法将在 CRON 中创建一个新条目以在给定时间运行给定任务。
【讨论】:
以上是关于在网络应用程序中,即使我不在网页上,是不是有任何方法可以在特定时间运行功能?的主要内容,如果未能解决你的问题,请参考以下文章
在 Powerpc 上,是不是有任何等效于英特尔的 movemask 内在函数?