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

高频js-----js执行机制 Event Loop

修改代码,让代码每隔1秒输出1-5  for (var i = 0; i < 5;i++) {setTimeout(() => {console.log(i)}, 1000)}

首先我们需要了解js的执行机制 (Event Loop)

js是单线层,如果现在执行上面代码的话 会输出 5个5

这里不明白的同学可以去看一下我以前发布的关于EventLoop的文章

这是因为在 JavaScript 中,setTimeout 函数是一个异步函数,它会在指定的时间间隔后执行回调函数。在这段代码中,循环会立即执行,并且在每个迭代中都会调用 setTimeout 函数来创建一个定时器。但是,由于 setTimeout 是异步执行的,循环会继续执行而不会等待定时器的回调函数执行。

下面附上修改后的代码

使用async 和await 进行异步处理

 test 函数中使用了 await 关键字来等待 myPromise 函数返回的 Promise 对象。await 关键字会暂停函数的执行,直到 Promise 对象被解析(resolved)为止 然后每隔1秒打印一个数字

function myPromise(num){return new Promise((resolve, reject) => {setTimeout(() => {resolve(num)}, 1000)})}async function test() {for (var i = 0; i < 5;) {i++;console.log(await myPromise(i))}}test();

http://www.lryc.cn/news/259407.html

相关文章:

  • 恢复出厂设置后在 Android 上恢复照片的 6 种常用方法
  • 人工智能_机器学习065_SVM支持向量机KKT条件_深度理解KKT条件下的损失函数求解过程_公式详细推导_---人工智能工作笔记0105
  • 网线市场现状与发展趋势预测
  • 力扣二叉树--第四十一天
  • 计算机视觉(P2)-计算机视觉任务和应用
  • redis-学习笔记(Jedis zset 简单命令)
  • uniapp实战 —— 弹出层 uni-popup (含vue3子组件调父组件的方法)
  • 智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Netty详细文档
  • C语言结构体和位段
  • 【剑指offer|图解|数组】寻找文件副本 + 螺旋遍历二维数组
  • Python核心编程之文件和输入输出
  • Axure 9基本元件,表单及表格元件简介,表单案例
  • ARM I2C通信
  • Cent OS7 磁盘挂载:扩展存储空间和自动挂载
  • 《使用ThinkPHP6开发项目》 - 创建应用
  • SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析
  • MySQL 报错 You can‘t specify target table for update in FROM clause解决办法
  • Linux中使用podman管理容器
  • 飞天使-linux操作的一些技巧与知识点3-http的工作原理
  • 微搭低代码实现登录注册功能
  • 使用Cobalt Srike制作钓鱼文件
  • 任意文件读取漏洞
  • 一个文件下png,jpg,jpeg,bmp,xml,json,txt文件名称排序命名
  • phpstudy小皮(PHP集成环境)下载及使用
  • [BUG记录]UART占用CPUload过高问题
  • Flutter常用命令
  • 【C++】POCO学习总结(十四):引用计数、共享指针、缓冲区管理
  • Python之禅
  • RocketMQ源码 Broker-SubscriptionGroupManager 订阅组管理组件源码分析