当前位置: 首页 > 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)

相关文章:

  • 面试篇 - 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变革硬件
  • 支持企业增强战略敏捷更好发展,上海市领导密集走访外贸外资企业
  • 工人日报评规范隐藏式车门把手:科技美学须将安全置顶
  • 印称印巴军事行动总指挥同意将局势降级
  • 英国首相斯塔默住所起火,警方紧急调查情况
  • 商务部召开外贸企业圆桌会:全力为外贸企业纾困解难,提供更多支持
  • 韩国总统选战打响:7人角逐李在明领跑,执政党临阵换将陷入分裂