首页 > 其他分享 >前端-题目集合

前端-题目集合

时间:2024-04-09 17:56:22浏览次数:15  
标签:异步 同步 题目 前端 主线 任务 集合 执行 Event

1.前端开发:JS事件循环机制 

 

事件循环

什么是事件循环(Event Loop)? 众所周知, Javascript是一门单线程的语言, 单线程即同一时间只能做一件事, 但这并不意味着JavaScript在执行代码的过程中就会一直阻塞,而解决单线程不阻塞的这个机制就叫做事件循环(Event Loop), 也就是同步和异步的概念.在JS中, 所有的任务都可以分为了同步任务异步任务

  • 同步任务: 立即执行的任务, 且只有上一个同步任务执行完毕, 才会执行下一个任务

    同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。

  • 异步任务: 异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。 即在任务执行时不能立刻得到结果, 而是需要在将来通过一定的手段获取, 则称之为异步任务, 例如网络请求, 定时器, 计时器等

    异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。

     

任务执行流程:

同步任务与异步任务的运行流程图

从上图可以看到, 同步任务和异步任务分别进入不同的执行环境, 同步任务进入主线程, 即主执行栈, 异步任务进入任务队列. 主线程内的任务执行完毕至为空时, 回去任务队列读取对应的任务, 推入主线程执行. 上述过程的不断重复就称之为事件循环(Event Loop)

宏任务和微任务(微 ->宏)

在异步任务中并不像同步任务按顺序执行, 而是再细分为宏任务(macro-task)微任务(micro-task)

每一次Event Loop触发并开始执行异步任务时, 流程如下:

 

 

总结就是:

  • 执行一个宏任务时, 遇到微任务, 会把微任务加入到微任务的事件队列中
  • 当宏任务执行完成后, 再开始依次执行微任务事件队列中的所有微任务

常见的宏任务有:

  • setTimeout/setInterval
  • script(可以理解为外层的同步代码)
  • I/O操作(node.js)

常见的微任务有:

  • Promise的方法
  • Object.observe(已废弃, Proxy对象替代)
  • process.nextTick(node.js)
  • MutaionObserver

 

 

 

 

数据结构与算法:数组 链表 二叉树 图

排序:快排 归并排序

标签:异步,同步,题目,前端,主线,任务,集合,执行,Event
From: https://www.cnblogs.com/July-/p/18124468

相关文章

  • 前端面试题 — 浏览器安全问题
    1.什么是XSS攻击?如何防范XSS攻击?XSS攻击是一种跨站脚本攻击,攻击者通过在网页中注入恶意脚本来获取用户信息或控制页面。防范XSS攻击的方法包括对用户输入进行过滤和转义、使用HTTP头部中的ContentSecurityPolicy(CSP)等。2.什么是CSRF攻击?如何防范CSRF攻击?CSRF攻击是一种跨......
  • srs+webrtc实现浏览器直播(仿b站页面,纯前端)
    关于srs请看我之前的博客,SRS实现网页和手机端简单直播。与之不同的是,浏览器推流需要使用werbrtc,因此只需要按srs官网配置即可,WebRTC|SRS(ossrs.net)。回到正题... 一.页面搭建b站web直播页面是通过video标签元素实现,但是video并不能同时将摄像头、麦克风、屏幕共享等同时......
  • xmlhttprequest upload 实现前端上传进度
    elementuiupload代码片段exportdefaultfunctionupload(option){if(typeofXMLHttpRequest==='undefined'){return;}constxhr=newXMLHttpRequest();constaction=option.action;if(xhr.upload){xhr.upload.onprogress=......
  • 前端【打包相关的配置项】【项目打包后本地查看配置】【去掉打包后js的map文件】【生
    1、打包后会生成dist目录,里面的index.html双击打开是空白的,需要部署到服务器上才能看到项目内容,此时可以通过vue.config.js中配置一个参数,这样本地打包完就可以看到效果vue.config.js1const{defineConfig}=require('@vue/cli-service')2module.exports=defineCon......
  • VUE - bigint解决前端精度丢失的问题
    VUE-bigint解决前端精度丢失的问题问题描述java后端long类型的范围-2^63~2^63,即:-9223372036854775808~9223372036854775807,它是19位的。这个数字可以通过方法获得:Long.MAX_VALUE、Long_MIN_VALUE。前端JS的数字类型的范围-2^53~2^53,即:-9007199254740991~900719925......
  • 前端【sass、scss、stylus、less、css】
    介绍less sass stylus 都是css预处理器,语法上稍有差异,作用一样都是让css,增强能力,具备变量,函数..的能力sass的语法两种语法.sass和.scss.sass和.stylus语法很像(了解)要求省略{}和分号,缩进表示嵌套使用$变量名:变量值  定义变量, 示例: ......
  • 前端学习-UI框架学习-Bootstrap5-016-卡片
    菜鸟教程链接简单的卡片<template><divclass="card"><h4class="card-title">标题</h4><imgsrc="../assets/th.jfif"alt="537"class="card-img-top"style="width:50px;......
  • Set集合以及其中实现类的底层原理分析
    Set集合的特点无序:存取顺序不一致如存入张三、李四、王五。而遍历获取到的是李四,张三,王五不重复:可以去除重复无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素set集合的实现类HashSet:无序、不重复、无索引LinkedHashSet:有序、不重复、无索......
  • 免费开源多客全新4.0版本圈子校园社交论坛系统,可打包小程序,于TP6+uni-app全开源,可打包
    校园跑腿服务的好处与优势+Vff06020161.提供便捷的生活服务校园跑腿服务通过线上平台与线下服务人员结合,为学生提供一站式的生活服务,包括代购、快递、送餐等,方便学生处理日常小事。这项服务不仅节省了学生的时间,还大大减轻了他们的负担,使他们能够更好地专注于学习和个人发展......
  • WebView2 系列之-前端向后端传递文件对象
    背景WebView2中,前端到后端的消息传递,通常是不支持传递对象的。但是我在查阅官方文档时发现了一个例外,那就是方法postMessageWithAdditionalObjects如何传递附加对象webview2中,前端js向后端传递消息通常使用window.chrome.webview.postMessage方法,postMessage的定义如下:......