reactjs 在特定时间后调用函数,例如一天[关闭]

zysjyyx4  于 2023-01-08  发布在  React
关注(0)|答案(4)|浏览(124)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

3天前关闭。
Improve this question
有没有办法在特定时间后调用一个函数?例如,我想调用一个每天中午12点发送通知的函数。setInterval或setTimeout有没有可能做这样的事情?

kcwpcxri

kcwpcxri1#

这是一种在类组件中实现的方法,您可以用业务逻辑替换日志记录。

componentDidMount() {this.interval = setInterval(() => console.log("qwer"),1000)}
bvjxkvbb

bvjxkvbb2#

我建议使用cron,但如果您需要使用setInterval()

setInterval(function() {
  let [hour, min, secs] = (new Date()).toISOString().split("T")[1].split(":")
  secs = secs.split(".")[0]
  if (Number(hour + min + secs) == 0) { //check if its midnight
    //doSomething()  at 00:00 GMT
  }
}, 1000)
8mmmxcuj

8mmmxcuj3#

window.setInterval(function(){ // Set interval for checking
    var date = new Date(); // Create a Date object to find out what time it is
    if(date.getHours() === 8 && date.getMinutes() === 0){ // Check the time
        // Do stuff
    }
}, 60000); // Repeat every 60000 milliseconds (1 minute)
wvmv3b1j

wvmv3b1j4#

您的问题非常宽泛,没有涉及上下文/环境/堆栈等。

仅用于Web

记住,只有当用户保持标签页和浏览器打开,并且当用户第一次登陆页面时计时器启动时,此操作才有效。但是,当计时器启动时,您可以保存在localStorage中,以便当用户再次登陆页面时,将创建一个新的倒计时,其中包含剩余时间(您需要计算此时间)。

const oneDayMs = 1000 * 60 * 60 * 24

const fn = () => {
  console.log('called')
};
    
// set the timer and call the function after 1 day
setInterval(fn, oneDayMs);

还有使用Notification APIsWebWorkers的更复杂的方法。
如果您要发送的通知基于事件(数据库更改),则您的应用(客户端)必须订阅后端服务(WebSocket)并对接收到的消息做出React,后端必须在给定时间运行变异(调度程序)并向客户端发送消息。
Firebase具有此功能。请参见Firebase Schedule FunctionsFirebase Messaging

相关问题