用Promise封装一个定时器

简介: 用Promise封装一个定时器

用Promise封装一个定时器函数,这个函数会在指定时间后 resolve,并返回设定的结果值。

下面是实现代码,这个封装的定时器可以像原生Promise一样使用then、catch和finally方法:

/**
 * 用Promise封装的定时器函数
 * @param {number} delay 延迟时间(毫秒)
 * @param {any} value 定时器结束后要返回的值
 * @returns {Promise} 返回一个Promise对象
 */
function delay(delay, value) {
  return new Promise((resolve) => {
    // 使用setTimeout实现延迟
    setTimeout(() => {
      // 延迟结束后resolve,并传递value
      resolve(value);
    }, delay);
  });
}

// 使用示例
console.log('开始执行');

// 1秒后输出"1秒后执行"
delay(1000, "1秒后执行")
  .then(result => {
    console.log(result);
    // 可以继续链式调用,再延迟2秒
    return delay(2000, "再等2秒后执行");
  })
  .then(result => {
    console.log(result);
    return delay(1500); // 也可以不传递返回值
  })
  .then(() => {
    console.log("又过了1.5秒");
  })
  .finally(() => {
    console.log("所有定时任务完成");
  });

这个封装的定时器函数有以下特点:

  1. 接收两个参数:延迟时间(毫秒)和要返回的值
  2. 返回一个Promise对象,在指定延迟后会resolve并返回设定的值
  3. 支持链式调用,可以很方便地实现多个连续的定时操作
  4. 可以配合then、catch(虽然这里不会reject,但可以捕获上游错误)和finally使用
目录
相关文章
ECharts 饼图数据放在饼图内部显示
ECharts 饼图数据放在饼图内部显示
1208 0
|
4月前
|
人工智能 运维 API
OpenCode vs Codex:一个国内AI用户的真实体验对比
国内AI开发者实测:Codex接入国产模型需两天折腾代理与配置,而OpenCode仅5分钟即用,支持57个国产模型一键切换、全链路稳定、原生中文友好。闭眼选OpenCode!
|
JSON JavaScript 数据格式
Vue中base64编码和解码
Vue中base64编码和解码
944 0
|
11月前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与集成。首先下载并解压seata-server-1.5.1,修改application.yml配置,将seataServer.properties配置上传至Nacos作为统一配置中心,并创建所需数据库表。启动tc-server后,注册到Nacos,通过控制台可查看服务状态。各微服务需引入Seata依赖,并在application.yml中配置相关参数。为实现高可用,可搭建多节点TC集群,如GZ和HZ集群,通过Nacos统一管理事务组映射,微服务从Nacos读取client.properties配置,动态切换TC集群连接,提升系统容灾能力。
621 0
|
数据采集 监控 API
淘宝商品信息批量获取接口技术详解
本文介绍批量获取淘宝商品信息的两种方法:官方API与Python爬虫。涵盖应用场景、技术实现、代码示例及合规注意事项,助您高效采集标题、价格、销量等数据,用于市场分析与竞品监控,兼顾可行性与风险控制。(238字)
3462 0
|
存储 JavaScript 前端开发
务必把握Map对象在JavaScript循环中的使用细节
由于Map对象跟传统的对象类似,但提供了更多的迭代功能,它被广泛用来代替Object存储键值对。适当的使用Map和配套的迭代方法,可以让代码更加清晰,提高数据操作的灵活性和效率。在数据量大或者对迭代顺序有特定需求时,Map会是一个很好的选择。
771 0
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
1057 15
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
|
JavaScript 前端开发 开发者
JavaScript基础——JavaScript变量名称命名规范
JavaScript变量命名规范是编写高质量代码的重要部分。通过遵循基本规则、使用常见命名约定并应用最佳实践,可以提高代码的可读性和可维护性。希望本文能帮助开发者在日常编程中更好地理解和应用JavaScript变量命名规范,从而编写出更清晰、更可靠的代码。
1120 11
|
JavaScript 前端开发
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
JavaScript实现手写签名,可触屏手写,支持移动端与PC端双端保存
893 0
|
开发工具 git
使用git提交到远程仓库报错:Updates were rejected because the remote contains work that you do
使用git提交到远程仓库报错:Updates were rejected because the remote contains work that you do
5123 0
使用git提交到远程仓库报错:Updates were rejected because the remote contains work that you do

热门文章

最新文章