当前位置:首页 > JavaScript

js实现定时提醒

2026-02-02 14:51:09JavaScript

使用 setTimeout 实现单次提醒

通过 setTimeout 延迟执行回调函数,适用于单次定时提醒场景。

function setReminder(message, delay) {
  setTimeout(() => {
    alert(message); // 或 console.log(message) 控制台输出
  }, delay * 1000); // 延迟时间(秒转毫秒)
}
// 示例:5秒后弹出提示
setReminder("该休息了!", 5);

使用 setInterval 实现周期性提醒

通过 setInterval 周期性执行任务,适合重复提醒场景。

function setPeriodicReminder(message, interval) {
  setInterval(() => {
    alert(message); 
  }, interval * 1000); // 间隔时间(秒转毫秒)
}
// 示例:每30分钟提醒一次
setPeriodicReminder("喝水时间到!", 1800);

结合 Notification API 实现桌面通知

浏览器通知更显眼,需用户授权后使用。

function showNotification(title, options) {
  if (Notification.permission === "granted") {
    new Notification(title, options);
  } else if (Notification.permission !== "denied") {
    Notification.requestPermission().then(permission => {
      if (permission === "granted") {
        new Notification(title, options);
      }
    });
  }
}
// 示例:10秒后发送通知
setTimeout(() => {
  showNotification("提醒", { body: "会议即将开始!" });
}, 10000);

使用 localStorage 存储提醒状态

避免页面刷新后定时器失效,记录提醒状态。

js实现定时提醒

function setPersistentReminder(key, message, delay) {
  const lastReminded = localStorage.getItem(key);
  if (!lastReminded || Date.now() - lastReminded > delay * 1000) {
    alert(message);
    localStorage.setItem(key, Date.now());
  }
}
// 示例:每天只提醒一次
setPersistentReminder("dailyReminder", "记得写日报!", 86400);

注意事项

  • 定时器精度受浏览器标签页休眠影响,长时间未激活可能延迟。
  • 清除定时器使用 clearTimeoutclearInterval,避免内存泄漏。
  • 移动端需注意唤醒锁机制,防止屏幕关闭后定时器停止。

完整示例代码

// 综合定时提醒功能
class Reminder {
  constructor() {
    this.timers = {};
  }

  add(name, callback, delay, repeat = false) {
    if (repeat) {
      this.timers[name] = setInterval(callback, delay * 1000);
    } else {
      this.timers[name] = setTimeout(() => {
        callback();
        delete this.timers[name];
      }, delay * 1000);
    }
  }

  cancel(name) {
    const timer = this.timers[name];
    if (timer) {
      clearInterval(timer);
      clearTimeout(timer);
      delete this.timers[name];
    }
  }
}

// 使用示例
const reminder = new Reminder();
reminder.add("break", () => alert("站起来活动一下!"), 3600, true);

标签: js
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现基础轮播效果 使用HTML结构创建轮播容器和图片元素: <div class="carousel"> <div class="carousel-inner">…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…