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

实践:事件循环

实践:事件循环

  • 代码示例
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve('3').then(res => console.log(res));
console.log('4');

上述的代码的输出结果是什么

在这里插入图片描述

  • 1和4肯定优先输出,因为他们会立即方式堆栈的执行上下文中执行,3这个then回调函数会被放入微队列中优先处理,而计时器会放入回调队列中等待微队列执行完毕后再放入调用堆栈中执行

  • 所有回调队列中的代码是无法保证执行效率的,我们可以在用一个Promise来执行一个长时间的一个微队列

console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve('3').then(res => console.log(res));
Promise.resolve('4').then(res => {
  for (let i = 1; i < 100000000000; i++) {}
  console.log(res);
});
console.log('5');

在这里插入图片描述

  • 如果微队列需要等待很长的时间,所以对于回调队列中的函数我们无法保证它的执行效率

http://www.kler.cn/a/465195.html

相关文章:

  • QT-窗口嵌入外部exe
  • pandas-栗子
  • 数据库进阶教程之DDL语句(万字详解)
  • Java 数据库连接 - Sqlite
  • 【新教程】华为昇腾NPU的pytorch环境搭建
  • 在Ubuntu 18.04.6 LTS安装OpenFace流程
  • STM32入门教程(CAN通信篇)
  • (leetcode算法题)​122. 买卖股票的最佳时机 II​ 和 123. 买卖股票的最佳时机 III
  • PostgreSQL-01-入门篇-简介
  • Redis数据库——数据结构类型
  • 基于16QAM的载波同步和定时同步性能仿真,采用四倍采样,包括Costas环和gardner环
  • tiny RISCV项目学习
  • 系统设计——大文件传输方案设计
  • Springboot 下载附件
  • 靶场搭建问题(技巧)总结
  • DEWA功能介绍
  • Redis 中 Lua 脚本的使用详解
  • 络安全警钟:通过Microsoft Teams和AnyDesk传播的DarkGate恶意软件
  • JavaScript 的 requestAnimationFrame
  • 如果Adobe 退出中国后怎么办
  • 安全框架:Apache Shiro
  • Springboot数据层开发 — 整合jdbcTemplate、mybatis
  • Word格式修改
  • Nginx知识详解(理论+实战更易懂)
  • PDF预览插件
  • 服务器数据恢复—离线盘数超过热备盘数导致raidz阵列崩溃的数据恢复