当前位置:首页 > JavaScript

js 实现睡眠

2026-04-05 17:51:58JavaScript

在JavaScript中实现睡眠(延迟执行)可以通过多种方式实现。以下是几种常见的方法:

使用setTimeout

通过setTimeout函数可以实现延迟执行代码的效果。setTimeout会在指定的时间后执行回调函数。

js 实现睡眠

console.log('开始');
setTimeout(() => {
    console.log('延迟2秒后执行');
}, 2000);
console.log('继续执行');

使用Promise和async/await

结合Promiseasync/await语法可以更优雅地实现睡眠功能。

js 实现睡眠

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
    console.log('开始');
    await sleep(2000);
    console.log('延迟2秒后执行');
}
demo();

使用Generator函数

通过Generator函数和yield关键字也可以实现类似的效果。

function* sleepGenerator(ms) {
    yield new Promise(resolve => setTimeout(resolve, ms));
}

const generator = sleepGenerator(2000);
generator.next().value.then(() => {
    console.log('延迟2秒后执行');
});
console.log('开始');

使用Atomics.wait

在Node.js环境中,可以使用Atomics.wait实现同步睡眠。这种方法会阻塞主线程,不推荐在浏览器中使用。

function sleep(ms) {
    const sharedArrayBuffer = new SharedArrayBuffer(4);
    const view = new Int32Array(sharedArrayBuffer);
    Atomics.wait(view, 0, 0, ms);
}

console.log('开始');
sleep(2000);
console.log('延迟2秒后执行');

注意事项

  • setTimeoutPromise的方式是非阻塞的,适合大多数场景。
  • Atomics.wait会阻塞主线程,可能导致性能问题。
  • 在浏览器环境中,避免使用阻塞式睡眠,以免影响用户体验。

标签: 睡眠js
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

jquery和js

jquery和js

jQuery与JavaScript的区别 jQuery是一个基于JavaScript的库,封装了许多常用的功能,简化了DOM操作、事件处理、动画效果等。JavaScript是原生语言,功能更全面但代码…