当前位置: 首页 > news >正文

关于setTimeout输出

老是搞混,今天总结一下

手写setTimeout在js中是要被push到宏任务队列的。

1、这里settimeout与for循环结合,并不能实现我所想的类似于setInterval那种,这三个定时器,都会在页面加载的时候同时开启,谁先跑得快谁先打印,并不是像串行那种你等我那种打法

function mysetInterval(fn, a, b) {
    for (let i = 0; i < 3; i++) {
        setTimeout(() => fn(), a + i * b);
    }
}
  • 要想实现串行效果
  • 改成递归调用--参考settimeout实现setinterval
  • 用async与await解决--参考repeat(fn,5,1000)写法

2、setTimeout虽然书写有顺序,这里谁跑得快就谁先输出

// 王五-李四-张三 (间隔1s输出)//

   setTimeout(function () {  //第一层
            console.log('张三')
   }, 3000)
   setTimeout(function () {  //第一层
          console.log('李四')
   }, 2000)
   setTimeout(function () {  //第一层
            console.log('王五')
   }, 1000)
        // 王五-李四-张三 (间隔1s输出)

3、setTimeout代表的回调地狱

是会实现串行的效果的

 setTimeout(function () {  //第一层
            console.log('张三');//等3秒打印张三在执行下一个回调函数
            setTimeout(function () {  //第二层
                console.log('李四');//等2秒打印李四在执行下一个回调函数
                setTimeout(function () {   //第三层
                    console.log('王五');//等一秒打印王五
                }, 1000)
            }, 2000)
 }, 3000)

http://www.dtcms.com/a/133273.html

相关文章:

  • 面试篇 - Transformer模型中的位置编码
  • Windows 操作系统 - Windows 10 磁盘管理无法为 C 盘选择扩展卷
  • Java单例模式:实现全局唯一对象的艺术
  • Linux Kernel 3
  • LDAP渗透测试
  • java 线程池:IO密集型的任务(CPU核数 * 2 + 1),为什么这么设置,计算密集型任务( CPU核数+1 ),为什么这么设置
  • 火车头采集动态加载Ajax数据(无分页瀑布流网站)
  • Python numpy 与pandas
  • Apache Commons CLI 入门教程:轻松解析命令行参数
  • 运维面试题(十三)
  • linux一次启动多个jar包
  • 一键解锁Landsat 9地表温度计算!ENVI与ArcGIS Pro全流程详解(无需NASA大气校正)
  • 解决前端使用Axios时的跨域问题
  • 《MySQL从入门到精通》
  • 【数据集】上市公司投资效率及非效率投资数据测算+dofile(2000-2023年)
  • 深入理解计算机系统记录
  • README.md 完全指南:Markdown 语法+实例
  • 消息中间件kafka,rabbitMQ
  • MQTT、HTTP短轮询、HTTP长轮询、WebSocket
  • OBOO鸥柏如何以智能教育室内外触摸屏一体机AI变革硬件
  • 在Spring Boot中浅尝内存泄漏
  • C++多态知识点梳理
  • Java笔记5——面向对象(下)
  • 如何在Windows 10系统中查看已连接WiFi密码-亲测可用-优雅草卓伊凡
  • 使WebSocket 稳定可靠,需要考虑的方向
  • 2025年十六届蓝桥杯Python B组原题及代码解析
  • 今日行情明日机会——20250414
  • css实现一键换肤
  • 入门-C编程基础部分:1、环境搭建
  • MySQL 超详细安装教程与常见问题解决方案