在网络应用程序中,即使我不在网页上,是不是有任何方法可以在特定时间运行功能?

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 内在函数?

实现不在移动设备上预期缩放

即使选项卡不在焦点上,也从 Web 应用程序发送地理位置?

在 Swift Playgrounds (iOS) 上使用数据库

如果之前有任何为空,则从可选的有序文本框中移动值

即使我不在页面上,如何每天在特定时间在我的页面上运行 youtube 视频?