首页 > 其他分享 >请写一个sleep(暂停)函数

请写一个sleep(暂停)函数

时间:2024-11-24 17:37:21浏览次数:2  
标签:function 函数 await sleep Promise 暂停 async data

/**
 * Pauses execution for a specified number of milliseconds.
 *
 * @param {number} ms The number of milliseconds to pause for.
 * @returns {Promise<void>} A Promise that resolves after the specified delay.
 */
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}


// Example usage:

async function demo() {
  console.log("Starting demo...");
  await sleep(2000); // Pause for 2 seconds
  console.log("Two seconds later...");
}

demo();


// Another example using async/await and showing a loading message:

async function fetchData() {
  console.log("Fetching data...");
  // Simulate an API call that takes some time
  await sleep(3000);
  console.log("Data fetched!");
  return "Some data";
}

async function displayData() {
  const loadingMessage = document.createElement('p');
  loadingMessage.textContent = 'Loading...';
  document.body.appendChild(loadingMessage);


  const data = await fetchData();
  console.log(data); // Log the fetched data

  document.body.removeChild(loadingMessage); // Remove the loading message

  const dataDisplay = document.createElement('p');
  dataDisplay.textContent = data;
  document.body.appendChild(dataDisplay);
}



displayData();

Explanation:

  1. Promise based: The sleep function uses a Promise to handle the asynchronous delay. This is the standard way to handle asynchronous operations in JavaScript and allows you to use async/await for cleaner code.

  2. setTimeout: Inside the Promise, setTimeout is used to schedule the execution of the resolve function after the specified ms (milliseconds) delay.

  3. async/await: The examples demonstrate how to use async/await to call the sleep function. The await keyword pauses the execution of the async function until the Promise returned by sleep resolves (after the delay). This makes asynchronous code look and behave a bit more like synchronous code, which is easier to read and understand.

  4. Example with loading message: The second example shows a more practical use case, simulating fetching data from an API. It includes a loading message to inform the user that the operation is in progress, improving the user experience. This example also demonstrates how to manipulate the DOM (add and remove elements) in conjunction with the sleep function.

This approach is widely used and preferred over older methods (like using setTimeout directly for pausing execution flow) because it's more manageable and integrates well with modern JavaScript's asynchronous programming paradigms.

标签:function,函数,await,sleep,Promise,暂停,async,data
From: https://www.cnblogs.com/ai888/p/18566023

相关文章

  • 24最新多目标(MORBMO_PSORF)基于粒子群算法优化随机森林的多目标红嘴蓝鹊优化算法自变
    接代码定制,算法改进等任意多目标都可以用(目标个数可变)含约束的多目标优化vs不含约束的多目标优化带具体数学表达式(白箱)vs不带具体数学表达式的(灰箱)连续版本的多目标参数寻优vs离散版本的多目标参数寻优连续+离散组合版本的多目标参数寻优白箱模型+灰箱模型组合版本的多目......
  • 24最新多目标(MOCOA_PSORF)粒子群算法优化随机森林的多目标浣熊算法自变量寻优(反推最
    接代码定制,算法改进等任意多目标都可以用(目标个数可变)含约束的多目标优化vs不含约束的多目标优化带具体数学表达式(白箱)vs不带具体数学表达式的(灰箱)连续版本的多目标参数寻优vs离散版本的多目标参数寻优连续+离散组合版本的多目标参数寻优白箱模型+灰箱模型组合版本的多目......
  • unity3d——基础篇2刷(三角函数)
     目录知识点一:弧度与角度的相互转换知识点二:三角函数知识点三:反三角函数代码实现知识点一:弧度与角度的相互转换弧度转角度:使用 Mathf.Rad2Deg 将弧度转换为角度。角度转弧度:使用 Mathf.Deg2Rad 将角度转换为弧度。知识点二:三角函数正弦函数(Sin):Mathf.Sin 计算......
  • C进阶 函数的递归
    文章目录一,函数递归的介绍二,考虑仅变量的递归三,考虑指针与地址的递归四,迭代与递归的选择与二者之间的利与弊五,经典题目:汉诺塔问题(感兴趣可以去看看视频学习一下,这个文章不太好描述)前言此类算法可以简化代码的书写量,进而可以更加简洁的书写自己的代码一.函数递归的介......
  • STM32 通过STM32cubemx软件进行代码生成(led灯闪烁)并最后封装点亮、熄灭以及翻转灯函数
    第一步生成代码对hal生成的文件进行解释Core:核心->Inc:各种头文件->Src:各种源文件Drivers:驱动文件MDK:可以看到个keil各种文件项目路径hail.ioc,可以用来修改配置,工作日志和配置文件 第二步点击MDK-ARM可以看到keil文件,双击打开keil文件对其配置自动复位功......
  • MySQL中的ROW_NUMBER窗口函数简单了解下
    ROW_NUMBER()是MySQL8引入的窗口函数之一,它为查询结果集中的每一行分配一个唯一的顺序号(行号)。这个顺序号是基于窗口函数的ORDERBY子句进行排序的,可以根据指定的排序顺序生成连续的整数值。ROW_NUMBER()在分页、去重、分组内排序等场景中非常有用。本文涉及到的脚本测试请......
  • 【C/C++】main函数为什么要return 0?
    文章目录先看看AI怎么说表示程序成功退出为什么是return0不是return1呢?语法角度总结先看看AI怎么说在C语言中,main函数的return0;表示程序成功执行并正常退出。它是程序的退出状态码,通常用于告诉操作系统程序的运行状态。返回0表示程序没有发生错误并正常结......
  • # 【鸿蒙开发】----##《鸿蒙所有的生命周期函数梳理》##
    【鸿蒙开发】----鸿蒙所有的生命周期函数梳理文章目录【鸿蒙开发】----鸿蒙所有的生命周期函数梳理什么是生命周期?一、UIAbility的生命周期二、组件的生命周期1.系统组件的生命周期函数2.自定义组件的生命周期函数3.页面组件的生命周期函数4.aboutToReuse复用组件生命周......
  • 【Solution】用C语言代码绘制线性函数包围图
    题目:绘制左边图的众多*输出图像,函数已给出:y=1,y=-x+2n,y=x。解决方案: 思路对于原来的坐标几何图形,2<=n,y<=x<=2n-y,1<=y<=x。我们用来写C代码的函数首先要确定三角形高的范围,至少要2。将图形分隔成上下两部分。从最高的顶点到三角形高的部分,和其下面的部分。使用line......
  • About函数大杂烩
    函数在C++编辑中可以给我们许多便利具体如下:首先是我们熟知的main输出n个*接下来就是用函数来输出n个*特别备注:void是不带返回值的例如;我点一分外卖,不光要付钱还要叫外卖员给我送外卖,这就是带返回值的函数但是void好比如老师叫你擦黑板,不用把黑板搬给老师看,擦完就好......