¥
立即购买

JavaScript定时器函数生成器

9 浏览
1 试用
0 购买
Dec 8, 2025更新

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

代码标题

延迟 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,兼容主流现代浏览器。

示例详情

解决的问题

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

适用用户

前端工程师

快速生成延迟交互、轮播切换、表单防抖等定时逻辑;统一命名与注释,减少手写错误,提升交付速度。

全栈开发者

为请求超时兜底、加载占位、异步重试等场景,一键产出可用方案,缩短联调周期。

互动与动效实现

将动画触发、阶段过渡、提示延迟以可读代码落地,保障性能与一致性。

特征总结

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

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 554 tokens
- 3 个可调节参数
{ 延迟时间 } { 执行功能 } { 回调参数 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59