JavaScript中sleep()函数的实现及应用

在众多编程语言中,sleep()函数是一个常见的工具,用于使程序暂停执行一段时间。例如,Python中的time.sleep(秒数)可以让程序暂停执行指定的秒数。然而,JavaScript并没有内建的sleep函数,这给开发者带来了不少困扰。因此,本文就来详细探讨如何在JavaScript中实现sleep功能,并介绍几种常用的方法和应用场景。

为什么JavaScript没有内建的sleep函数?

在JavaScript中,代码是单线程执行的。这意味着所有的操作都是在一个线程中按顺序执行的,如果其中一个操作阻塞了,这将导致后续的操作无法进行。因此,JavaScript的设计者没有引入使代码阻塞的sleep函数,而是提供了异步的解决方案,如setTimeoutsetInterval,来处理延迟和定时任务。

非阻塞和阻塞的区别

非阻塞(Non-blocking): 即使代码中存在延迟或等待,一些操作仍然可以继续进行。这是JavaScript的特性,它允许代码在等待某些操作完成的同时执行其他代码。

阻塞(Blocking): 当执行到某个特定的代码时,程序停止执行,直到这个代码完成指定的操作才继续。

虽然JavaScript传统上是非阻塞的,但在某些情况下,我们确实需要代码暂停执行,比如模拟用户操作的延迟、延时动画等。因此,引入类似sleep的功能在某些场景下是十分有用的。

实现JavaScript中的sleep函数

使用Promise和async/await实现的睡眠函数

这是目前最推荐的一种方法,因为它充分利用了JavaScript的异步特性,既不会阻塞主线程,又能实现类似同步代码的效果。

function sleep(ms) {return new Promise(resolve => setTimeout(resolve, ms));
}// 使用时
async function executeTasks() {console.log("Task 1");await sleep(1000); // 等待1秒

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

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

相关文章

python编程:创建 SQLite 数据库和表的图形用户界面应用程序

在本文中,我将介绍如何使用 wxPython 模块创建一个图形用户界面(GUI)应用程序,该应用程序允许用户选择 SQLite 数据库的存放路径、数据库名称、表名称,并动态添加字段及其类型。以下是具体的实现步骤和代码示例。 C:\p…

Unity实现简单的持久化存储

在Unity中,运行过程中的内容是不会保存的,但是如果我们有些游戏数据需要持久化存储,应该怎么办呢,所以Unity为我们提供了一个简单的数据存储的API。 附上代码片段 //写入数据PlayerPrefs.SetInt("IntType", 1);PlayerPr…

FreeRTOS【13】流缓冲区使用

1.开发背景 基于以上的章节,了解了 FreeRTOS 多线程间的信号量、队列的使用,已经满足了日常使用场景。其中,队列的使用规定了队伍成员的大小,然而现实使用场景下,很多数据不都是定长大小了,例如不定长的通讯…

在AutoDL上部署Yi-34B大模型

在AutoDL上部署Yi-34B大模型 Yi介绍 Yi 系列模型是 01.AI 从零训练的下一代开源大语言模型。Yi 系列模型是一个双语语言模型,在 3T 多语言语料库上训练而成,是全球最强大的大语言模型之一。Yi 系列模型在语言认知、常识推理、阅读理解等方面表现优异。 …

一键AI抠图,证件照换背景,可部署成自己的应用

1 开发背景 AI抠图技术已经非常成熟,并且有效果非常好的开源模型。 日常中可以用于替换证件照背景 但是网上许多的证件照替换背景 竟然需要收费 鉴于此,便将目前最好的(SOTA)开源抠图模型 BRIA Background Removal v1.4 Model …

银行贷款逾期还款流程的功能测试详解

银行贷款在未能按照约定的还款日期和金额进行还款时,即被视为逾期。 一、贷款逾期处理 产生罚息:银行会按照借款合同中的约定,对逾期部分加收罚息,罚息力度各家银行不同,但通常会在原利率的基础上加收一定比例。 影响…

运用函数:素数的判定

题目:编写函数,参数是个正整数n,如果它是个素数,返回1,否则返回0. 这种“判断一个事物是否具有某种性质”的函数还具有一个学术名称——谓词(predicate) #define _CRT_SECURE_NO_WARNINGS #in…

前端Vue自定义带加减按钮的数字输入框组件的设计与实现

随着前端技术的不断发展,开发的复杂度日益提升。传统的整块应用开发方式在面对小改动或小功能增加时,常常需要修改大量代码,导致整个系统的逻辑受到影响。为了解决这个问题,组件化开发成为了前端开发的必然趋势。 一、组件化开发…

阻塞队列BlockingQueue(FIFO)

一:简介 阻塞队列:从定义上来说是队列的一种,那么肯定是一个先进先出(FIFO)的数据结构。与普通队列不同的是,它支持两个附加操作,即阻塞添加和阻塞删除方法。 阻塞添加:当阻塞队列是满时,往队列里添加元素的操作将被阻塞。 阻塞移除:当阻塞队列是空时,从队列中获取…

GPT-4o:新一代人工智能技术的全方位解析引言

目录 🐋引言 🐋梳理 GPT 各版本之间的内容 🦈GPT-1:开创性的起点 🦈 GPT-2:参数规模的大幅提升 🦈 GPT-3:参数爆炸与多任务学习 🦈GPT-4:进一步提升的智…

pdf拆分成有图和无图的pdf(方便打印)

pdf拆分成有图和无图的pdf(方便打印) 原因 打印图片要彩印,每次都要手动弄,打印的时候很麻烦; 随着打印次数的增加,时间就越来越多 为解决此问题,使用python写一个exe解决这个问题 历程 找一个python的GUI界面找到 t…

每日刷题——杭电2156.分数矩阵和杭电2024.C语言合法标识符

杭电2156.分数矩阵 原题链接:Problem - 2156 题目描述 Problem Description:我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。 Input&#xf…

一套为家政服务行业开发的移动应用程序——家政上门服务app源码 家政上门服务系统源码

家政上门服务系统是一种通过互联网或移动应用平台,为用户提供在线预约、下单、支付和评价家政服务的系统。该系统整合了家政服务资源,使用户能够便捷地找到合适的服务人员,同时也为家政服务人员提供了更多的工作机会。 工作内容 操持家务、护…

Flink CDC - Postgres

1)部署安装Postgres服务 jiangzhongzhouZBMac-C02CW08SM ~ % docker pull postgres Using default tag: latest latest: Pulling from library/postgres latest: Pulling from library/postgres 24c63b8dcb66: Pull complete 2bb0b7dbd861: Pull complete ... D…

mac 安装java jdk8 jdk11 jdk17 等

oracle官网 https://www.oracle.com/java/technologies/downloads/ 查看当前电脑是英特尔的x86 还是arm uname -m 选择指定版本,指定平台的安装包: JDK8 JDK11的,需要当前页面往下拉: 下载到的安装包,双击安装&#x…

高通Android 12/13实现USB拔出关机功能

思路流程 1、监听广播->接受USB断开或者USB不充电广播->执行关机逻辑 涉及类 UsbManager/UsbDeviceManager \frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java \frameworks\base\services\com\android\hardware\usb\UsbManager.java 2…

力扣刷题--2148. 元素计数【简单】

题目描述 给你一个整数数组 nums ,统计并返回在 nums 中同时至少具有一个严格较小元素和一个严格较大元素的元素数目。 示例 1: 输入:nums [11,7,2,15] 输出:2 解释:元素 7 :严格较小元素是元素 2 &…

怎么使用Python代码在图片里面加文字

在Python中,给图片添加文字可以使用Pillow库(PIL的一个分支),它是一个强大的图像处理库。如果你还没有安装Pillow,可以通过pip安装: pip install Pillow下面使用一个简单的示例,演示如何使用Pi…

身份证号的正则表达式怎么写

在中国,一个标准的身份证号(通常是18位,但也有旧式的15位)包含数字和可能的校验码(X代表数字10)。下面是一个用于匹配这两种格式的正则表达式: 对于18位身份证号(包括X作为校验码&a…

java不使用遍历下标遍历数组的方法

java有一种新型循环,可以不使用遍历下标就可以遍历整个数组 for(数据类型 element 数组名) { System.out.println(element); } 示例代码如下: import java.util.*; public class HelloWorld { public static void main(String[] args) { double…