实现异步操作sleep

这两个函数 sleepdelay 都是使用 JavaScript 的 Promise 和 setTimeout 来实现异步操作的。不过它们的功能略有不同,下面我为你详细解释:

sleep 函数

sleep 函数接受一个秒数 seconds,并返回一个 Promise,该 Promise 在指定的秒数后解析。它主要用于在异步操作中模拟等待或延迟。

const sleep = (seconds) => new Promise(resolve => setTimeout(resolve, seconds));// 使用示例
async function demo() {console.log('开始');await sleep(2); // 等待2秒console.log('2秒后');
}demo();

delay 函数

delay 函数接受一个函数 func、一个秒数 seconds 和一些额外的参数 ...args。这个函数返回一个 Promise,该 Promise 在指定的秒数后调用传入的函数 func 并将其结果作为 Promise 的解析值。如果 func 函数抛出异常,那么 delay 返回的 Promise 会被拒绝。

function delay (func, seconds, ...args) {return new Promise((resolve, reject) => {setTimeout(() => {Promise.resolve(func(...args)).then(resolve, reject); // 注意这里也处理了reject}, seconds);});
}// 使用示例
function greet(name) {return `Hello, ${name}!`;
}delay(greet, 2000, 'World').then(result => console.log(result)); // 等待2秒后输出 "Hello, World!"

注意事项

  • delay 函数中,Promise.resolve(func(...args)) 是为了确保即使 func 不是一个返回 Promise 的函数,我们也能以统一的方式处理其返回值或抛出的异常。
  • 如果 func 是一个返回 Promise 的函数,那么 delay 也会等待这个 Promise 解析或拒绝后再继续。
  • delay 的实现中,我们同时处理了 resolvereject 的情况,以确保即使 func 抛出异常,delay 返回的 Promise 也能正确地拒绝。
  • delay 函数提供了更高级的功能,因为它允许你在延迟后执行任意函数并处理其结果或异常。而 sleep 函数则更简单,只是简单地等待一段时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

封装图片占位图组件

<laze-image class="image" :url="item.image" :game_name="item.game_name" :placeholder="require(@/static/images/common/placeholder.png)"></laze-image> 1.通过调用组件实现 先加载预览图片,再加载真实的图片 2…

Vscode连接远程服务器中的docker容器

配置远程docker容器 docker run -itd --name ubuntu-hkx --mount typebind,source/home/huangkx/docker,target/docker -p2001:22 ubuntu-hkx-image 进入docker docker exec -it ubuntu-hkx bash docker安装ssh 安装完成后启动 service ssh start 配置key 把本地的~/.ssh…

中国杀出全球首个烹饪大模型

什么&#xff1f;烹饪也有大模型&#xff1f;&#xff01; 没有听错&#xff0c;这就是国产厨电龙头老板电器最新发布——“食神”大模型。 数十亿级行业数据&#xff0c;数千万级知识图谱加持&#xff0c;据称还是全球首个。 它能为每个人提供个性化量身定制的解决方案&…

Kubernetes面试整理-如何配置和使用Service, Ingress?

在 Kubernetes 中,Service 和 Ingress 是用于管理和暴露应用程序的网络访问的主要资源。以下是如何配置和使用 Service 和 Ingress 的详细指南: Service Service 是一种抽象,用于定义一组 Pod 的逻辑集合,并提供一种访问这些 Pod 的策略。Service 可以使应用程序内部或外部…

TikTok短视频矩阵系统

随着数字化时代的到来&#xff0c;短视频已成为人们获取信息、娱乐消遣的重要渠道。TikTok&#xff0c;作为全球最受欢迎的短视频平台之一&#xff0c;其背后的短视频矩阵系统是支撑其成功的关键因素。本文将深入探讨TikTok短视频矩阵系统的构成、功能以及它在新媒体时代中的影…

什么领夹麦的音质最好又降噪?揭秘多款降噪出色的无线领夹麦克风

随着短视频的兴起&#xff0c;将视频拍摄方面的外设推到了风口浪尖上&#xff0c;麦克风作为视频拍摄或者现场直播使用的主要拾音工具&#xff0c;自然成为了大家非常关注的一个摄影外设工具&#xff0c;毕竟一款好的拾音工具能够给视频创作者或者直播博主带来更好的使用体验。…

汇川H5u小型PLC作modbusRTU从站设置及测试

目录 新建工程COM通讯参数配置协议选择协议配置 查看手册Modbus地址对应关系仿真测试 新建工程 新建一个H5U工程&#xff0c;不使用临时工程 系列选择H5U即可 COM通讯参数配置 协议选择 选择ModbusRTU从站 协议配置 端口号默认不可选择 波特率这里使用9600 数据长度&…

Nuxt3 实战 (十二):SEO 搜索引擎优化指南

添加 favicon 图标和 TDK&#xff08;标题、描述、关键词&#xff09; nuxt.config.ts 添加配置&#xff1a; export default defineNuxtConfig({app: {title:Dream Site,meta: [{ name: keywords, content: Nuxt.js,导航,网站 },{ name: description, content: 致力于打造程…

CCF秀湖会议:“第五存储架构”引发关注

近日&#xff0c;中国计算机学会第十三期CCF秀湖会议在苏州CCF业务总部&学术交流中心正式召开。本次会议就“新应用与硬件驱动下的存储技术创新”主题进行深入交流和探讨。中国工程院院士、清华大学郑纬民教授&#xff0c;华中科技大学金海教授&#xff0c;清华大学舒继武教…

TCPDump抓包命令详解:网络分析的强大工具

目录 一. 安装 TCPDump 二. 常用参数 三. 过滤表达式 基于协议的过滤&#xff1a; 基于地址的过滤&#xff1a; 基于端口的过滤&#xff1a; 逻辑操作符&#xff1a; 基于数据包内容的过滤&#xff1a; 基于时间戳的过滤&#xff1a; 基于MAC地址的过滤&#xff1a; …

计算机毕业设计Thinkphp/Laravel+vue高校图书馆借阅系统_i0521

图书馆借阅系统&#xff0c;主要的模块包括首页、个人中心、会员管理、会员等级管理、图书分类管理、图书信息管理、图书借阅管理、借阅服务评价管理、超时费用管理、留言板管理、系统管理等功能。系统中管理员主要是为了安全有效地存储和管理各类信息&#xff0c;还可以对系统…

浅学JVM

一、基本概念 目录 一、基本概念 二、JVM 运行时内存 1、新生代 1.1 Eden 区 1.2. ServivorFrom 1.3. ServivorTo 1.4 MinorGC 的过程 &#xff08;复制- >清空- >互换&#xff09; 1.4.1&#xff1a;eden 、servicorFrom 复制到ServicorTo&#xff0c;年龄1 …

力扣每日一题 特别的排列 DFS 记忆化搜索 位运算 状态压缩DP

Problem: 2741. 特别的排列 &#x1f468;‍&#x1f3eb; 参考题解 &#x1f37b; 暴搜 ⏰ 时间复杂度&#xff1a; O ( N ) O(N) O(N) class Solution {public int specialPerm(int[] nums) {boolean[] visited new boolean[nums.length];return dfs(nums, 0, -1, visit…

目标检测系列(二)yolov1的全面讲解

目录 1、网络结构 2、检测原理 3、制作训练正样本方法 4、损失函数 5、前向推理 6、模型缺限 YOLO的全称是you only look once&#xff0c;指只需要浏览一次就可以识别出图中的物体的类别和位置。YOLO被称为Region-free方法&#xff0c;相比于Region-based方法&#xff0…

AI已经火了一年了,真正属于普通人的机会在哪里?

对普通人来说&#xff0c;AI的机会在哪里&#xff1f; 这是过去一年来&#xff0c;我收到过最多的问题 在这篇文章里&#xff0c;我会把我目前对AI的理解阐述出来&#xff0c;分享3个普通人能够把握的方向 讲清楚在现在这个时间节点&#xff0c;当我们在说搞AI的时候&#x…

JavaScript Array filter() 方法

filter()方法允许你根据特定的条件从一个数组中筛选出新的数组。 filter()方法的语法: arr.filter(callback(element, index, array), thisValue) callback函数是必需的,它会为数组中的每个元素执行一次。该函数返回一个值,用于判断元素是否应该包含在新数组中。 element 是…

SpringBoot AOP + Redis延时双删功能

延时双删功能就不过多解释了&#xff0c;场景就是&#xff0c;为了少关联表&#xff0c;将数据的id 跟name存到redis中&#xff0c;但是为了解决数据一致性的问题&#xff0c;即一旦name修改了&#xff0c;如何更新redis&#xff0c;写了如下代码&#xff0c;部分参考了其他人的…

RAG应用要如何吃到大模型长上下文的红利?-LongRAG

去年底的时候&#xff0c;笔者写过&#xff0c;与其在RAG系统上雕花&#xff0c;可以重新思考一下&#xff0c;自己的业务场景是否非RAG不可吗&#xff1f;随着去年大模型的蓬勃发展&#xff0c;长度外推、更长的上下文模型&#xff0c;更厉害的中文底座大模型&#xff0c;都可…

RabbitMq camel

真实的项目如果 交换器/ 队列很多 建议在管理页面新建exchange / queue/ rootingKey /vhost, 而不要写死在springboot项目里 camel按rooting key发送消息: 最推荐 .to("rabbitmq:sino.nannan?routingKeysino.key&skipExchangeDeclaretrue&skipQueueDeclaretru…

Python 挖坑式填充Excel模板内容(包括页眉/SheetName/logo)

纵览 Python处理Excel的方式--解压缩方式1、导包2、对模板文件进行解压缩3、对解压缩后文件层级进行介绍4、准备需要载入的数据5、模板挖坑6、运行替换代码7、压缩文件8、生成文件9、完成代码10、可能遇到的问题 结语 Python处理Excel的方式–解压缩方式 在处理Excel中过程中&…