×
¥
查看详情
🔥 会员专享 文生文 代码生成

JavaScript定时器函数生成器

👁️ 76 次查看
📅 Dec 8, 2025
💡 核心价值: 本提示词专为JavaScript开发场景设计,能够根据用户指定的延迟时间和执行功能,生成符合最佳实践的setTimeout函数代码。通过结构化参数输入,确保生成的代码具备技术准确性、逻辑清晰性和可维护性,同时提供详细的代码注释和使用说明,帮助开发者快速理解和使用定时器功能。适用于网页交互开发、动画实现、异步任务处理等多种前端开发场景。

🎯 可自定义参数(3个)

延迟时间
定时器延迟执行的时间,单位为毫秒
执行功能
延迟结束后需要执行的函数或代码
回调参数
传递给回调函数的参数列表

🎨 效果示例

代码标题

延迟 3 秒后切换轮播图可见项(使用 setTimeout,含错误处理与取消支持)

函数实现

'use strict';

/**
 * 切换指定容器内的 .slide 项,仅显示目标索引项。
 * @param {{ selector: string, index: number }} params
 *  - selector: 容器选择器(例如 '#banner'),容器下应包含若干 .slide 元素
 *  - index: 目标要显示的 .slide 索引(从 0 开始)
 */
function switchSlide({ selector, index }) {
  // 参数校验
  if (typeof selector !== 'string' || !selector.trim()) {
    console.warn('[switchSlide] Invalid selector:', selector);
    return;
  }

  const root = document.querySelector(selector);
  if (!root) {
    console.warn(`[switchSlide] Element not found for selector: "${selector}"`);
    return;
  }

  const items = root.querySelectorAll('.slide');
  const count = items.length;
  if (count === 0) {
    console.warn(`[switchSlide] No ".slide" elements inside "${selector}"`);
    return;
  }

  // 索引合法性校验
  const safeIndex = Number(index);
  if (!Number.isInteger(safeIndex)) {
    console.warn(`[switchSlide] Index must be an integer. Received: ${index}`);
    return;
  }
  if (safeIndex < 0 || safeIndex >= count) {
    console.warn(`[switchSlide] Index out of bounds (${safeIndex}). Valid range: 0 - ${count - 1}`);
    return;
  }

  // 切换显示状态
  items.forEach((el, i) => {
    el.style.display = i === safeIndex ? 'block' : 'none';
  });
}

/**
 * 使用 setTimeout 在指定延迟后执行 switchSlide。
 * @param {number} delayMs - 延迟毫秒数,必须为非负有限数
 * @param {{ selector: string, index: number }} params - 传给回调的参数
 * @returns {number} timeoutId - 定时器 ID,可用于 clearTimeout 取消
 */
function scheduleSwitch(delayMs, params) {
  if (!Number.isFinite(delayMs) || delayMs < 0) {
    throw new Error(`delayMs must be a non-negative finite number. Received: ${delayMs}`);
  }

  // 安全执行:捕获回调中的异常,避免未处理错误中断后续逻辑
  const timeoutId = setTimeout(() => {
    try {
      switchSlide(params);
    } catch (err) {
      console.error('[scheduleSwitch] Unexpected error while switching slide:', err);
    }
  }, delayMs);

  return timeoutId;
}

参数说明

  • scheduleSwitch(delayMs, params)
    • delayMs: 延迟时间,单位毫秒。示例中为 3000(3 秒)。
    • params: 回调参数对象
      • selector: 字符串,容器选择器,如 '#banner'。容器内需要存在若干 .slide 元素。
      • index: 整数,要显示的 .slide 索引,基于 0 起始。

使用示例

// 要求:延迟时间 3000ms,执行功能为显示 #banner 容器内第 2 个 .slide(索引 1)
const timeoutId = scheduleSwitch(3000, { selector: '#banner', index: 1 });

// 如需在延迟期间取消执行(例如用户交互变化):
/* clearTimeout(timeoutId); */

注意事项

  • 请确保页面中存在符合选择器的容器,以及其子元素含有类名为 .slide 的轮播项。
  • index 从 0 开始计数;若越界或非整数,函数会给出警告并不执行切换。
  • 若在切换后采用内联样式 display 控制显示隐藏,可能与现有 CSS 动画或布局产生影响。更推荐使用添加/移除类名的方式控制可见性与动画。
  • setTimeout 的回调执行时间可能受主线程任务与浏览器节流影响,实际触发时间可能稍晚于设定值。
  • 定时器返回的 ID 应妥善保存,以便在必要时调用 clearTimeout 取消,避免不必要的 UI 变更。

代码标题

延迟 5 秒后显示 Toast,并在 2 秒后自动移除的安全版 setTimeout 实现

函数实现

/**
 * 在指定延迟后显示一条 toast 消息,并在 2 秒后自动移除。
 * 返回一个对象,可用于取消尚未触发的延迟执行。
 *
 * 设计原则:
 * - 使用 textContent 避免 XSS 风险,替代不安全的 innerHTML。
 * - 参数与类型校验,避免运行时错误。
 * - 提供取消功能,避免页面切换或组件卸载时的内存泄漏。
 *
 * @param {Object} options
 * @param {number} options.delay 延迟时间,毫秒。必须为非负有限数值。
 * @param {string} options.message 要显示的提示消息。
 * @param {string} options.container 容器的选择器(如 "#notify")。
 * @returns {{ id: number|null, cancel: function }} 返回超时定时器 id 和取消函数。
 */
function showTimeoutToast({ delay = 5000, message, container }) {
  // 基本校验
  if (typeof delay !== 'number' || !Number.isFinite(delay) || delay < 0) {
    throw new TypeError('delay 必须为非负有限数值');
  }
  if (typeof container !== 'string' || container.trim() === '') {
    throw new TypeError('container 必须为非空字符串选择器');
  }

  // 环境校验(SSR/非浏览器场景)
  if (typeof document === 'undefined') {
    console.warn('当前环境不存在 document,跳过 UI 显示');
    return { id: null, cancel: () => {} };
  }

  // 外层延迟:在 delay 毫秒后显示 toast
  const timeoutId = setTimeout(() => {
    try {
      const c = document.querySelector(container);
      if (!c) {
        console.warn(`未找到容器: ${container}`);
        return;
      }

      // 使用安全的 DOM API 构建内容,避免使用 innerHTML
      const toast = document.createElement('div');
      toast.className = 'toast';
      toast.textContent = String(message ?? '');

      // 将 toast 插入容器
      c.appendChild(toast);

      // 内层延迟:2 秒后移除 toast
      const removeId = setTimeout(() => {
        // 确保 toast 仍在对应容器中再移除
        if (toast && toast.parentNode === c) {
          c.removeChild(toast);
        }
        // 移除局部引用,帮助 GC
      }, 2000);

      // 可选:将 removeId 记录在元素上(便于调试或高级控制)
      toast.dataset.removeTimeoutId = String(removeId);
    } catch (err) {
      console.error('显示 toast 过程中发生错误:', err);
    }
  }, delay);

  // 提供取消尚未执行的外层定时器的能力
  return {
    id: timeoutId,
    cancel: () => {
      if (timeoutId !== null) {
        clearTimeout(timeoutId);
      }
    }
  };
}

参数说明

  • delay: 数字,单位毫秒。本例为 5000,表示 5 秒后执行显示逻辑。
  • message: 字符串,要显示的提示文本。示例为“请求超时,请稍后再试”。
  • container: 字符串,DOM 选择器,用于指定消息容器。示例为“#notify”。

说明:

  • 外层 setTimeout 使用 delay 控制显示时间点。
  • 内层 setTimeout 固定为 2000 毫秒,用于自动移除 toast。
  • 采用 textContent 设置文本,避免使用 innerHTML 带来的潜在安全风险。

使用示例

<!-- 示例容器 -->
<div id="notify"></div>

<!-- 可选:简单的样式,让 toast 更明显 -->
<style>
  .toast {
    display: inline-block;
    padding: 8px 12px;
    background: #333;
    color: #fff;
    border-radius: 4px;
    font-size: 14px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
  }
</style>

<script>
  // 将上面的 showTimeoutToast 函数粘贴到此处或在外部脚本中引入

  // 调用:5 秒后显示提示,并在 2 秒后自动移除
  const timer = showTimeoutToast({
    delay: 5000,
    message: '请求超时,请稍后再试',
    container: '#notify'
  });

  // 如果需要取消尚未触发的显示(例如用户已成功返回数据)
  // 可在合适的时机调用:
  // timer.cancel();
</script>

注意事项

  • 安全性:使用 textContent 设置消息文本,避免直接使用 innerHTML 引入 XSS 风险。
  • 容器存在性:若选择器未匹配到容器,函数会警告并跳过显示,不会抛出致命错误。
  • 取消机制:如果页面在 5 秒内卸载或业务状态发生变化,调用返回对象的 cancel() 可取消显示,避免不必要的 UI 操作。
  • 定时器限制:浏览器 setTimeout 的最大延迟受 32 位整型限制,极大延迟会被截断;5000 毫秒在安全范围内。
  • 兼容性:代码使用标准 DOM 与定时器 API,兼容主流现代浏览器。

示例详情

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

一键生成延迟执行代码,输入时间与动作,即得可直接粘贴的定时器方案。
自动优化结构与命名,避免常见疏漏,让代码更清晰、更易维护与复用。
内置详细注释与使用说明,新人也能看懂逻辑,上手即写、交付更安心。
支持多场景模板:动画触发、防抖提示、轮播切换、超时处理等一站式覆盖。
智能填充回调参数与默认值,减少手动拼接,降低出错率,效率直线上升。
自动给出注意事项与边界判断,规避重复触发、内存占用等隐藏风险。
兼容性与最佳实践提示随附,帮助团队统一风格,减少代码评审返工。
生成调用示例与可复制片段,从开发到联调一步到位,加速上线节奏。
可按项目需求定制命名、延时策略与清理方式,轻松融入现有代码库。
输入一次,多版本输出:基础款、带错误提示款、带清理函数款随需切换。

🎯 解决的问题

用一句话说明“延迟多久、要做什么”,即可生成一份可直接使用的 JavaScript 定时器代码与清晰的使用指南;默认补全命名、注释、异常与边界处理,帮助你快速完成动画延迟、交互提醒、轮播切换、加载超时、防抖等高频需求;通过引导式追问澄清需求细节,避免遗漏;让新人快速上手、资深开发更高效,减少返工与沟通成本,统一团队代码风格,稳定交付质量,提升上线成功率。

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...