一天时间迅速准备前端面试|JavaScript——异步进阶

Posted 江拥羡橙Q

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一天时间迅速准备前端面试|JavaScript——异步进阶相关的知识,希望对你有一定的参考价值。

🌈本系列文章是博主精心整理的面试热点问题,吸收了大量的技术博客与面试文章,总结多年的面试经历,带你快速建立前端面试知识体系。抓住每一场面试的机会,知己知彼才能百战百胜!

文章目录


本期介绍

JS 的特色就是异步编程,所有有很多关于异步的考点,本章都会讲解。如 event loop、promise、async-await、微任务和宏任务。学不会这些,就不算是精通 JS。

主要内容

  • event loop 执行过程
  • Promise 全面使用
  • async await 全面使用
  • 微任务和宏任务

关键字

  • Promise
  • async await
  • event loop
  • 微任务和宏任务

什么是event loop?

event loop,也叫事件循环/事件轮询,JS是单线程运行的,从前到后,一行一行执行,如果某一行执行报错,则停止下面的代码执行,先把同步代码执行完,再执行异步,异步要基于回调来实现,event loop 就是异步回调的实现原理。

event loop 执行过程

  1. 同步代码,一行一行放在 Call Stack 执行

  2. 遇到异步,会先“记录”下,等待时机(定时,网络请求等)

  3. 时机到了,就会移动到 Callback Queue

  4. 如果 Call Stack 为空(即异步代码执行完)Event loop 开始工作

  5. 轮训查找 Callback Queue,如有则移动到 Call Stack 执行

  6. 然后继续轮询查找(永动机一样)

图示


图示代码执行过程:

  1. 将 console.log(“Hi”) 推入调用栈,调用栈会执行代码
  2. 执行代码,控制台打印“Hi”,调用栈清空
  3. 执行 setTimeout,setTimeout由浏览器定义,不是ES6的内容;将定时器放到Web APIs中,到时间后将回调函数放到回调函数队列中
  4. 执行完了setTimeout, 清空调用栈
  5. console.log(“Bye”)进入调用栈,执行,调用栈清空
  6. 同步代码被执行完,,回调栈空,浏览器内核启动时间循环机制
  7. 五秒之后,定时器将cb1推到回调函数队列中
  8. 事件循环将cb1放入调用栈

Promise有哪三种状态

promise 有三种状态,分别是:pending(初始化状态)、resolved(成功状态)、rejected(失败状态)

pending ->resolvedpending->rejected

变化不可逆

状态的表现

pending状态,不会触发then和catch

resolved状态,会触发后续的then回调函数

rejected状态,会触发后续的catch回调函数

reslove只会触发then的回调,不会触发catch

reject只会触发catch的回调,不会触发then

Promise的then和catch如何影响状态的变化

then正常返回resolved,里面有报错则返回rejected

catch正常返回resolved,里面有报错则返回rejected


async/await介绍

解决异步回调callback hell(回调地狱),Promise then catch 链式调用,但也是基于回调函数,async/await是用同步语法编写异步代码,是同步语法,彻底消灭回调函数,是异步写法的最佳解决方式,是消灭异步回调的终极武器。
注意:async/await和promise不冲突。
await相当于Promise的then
try…catch可捕获日常,代替了Promise的catch

写法一:

!(async function(

//同步的语法

const img1 = await loadImg(src1)//await 必须用async函数包裹

cosole.log(img1.height,img.width)

const img2 = await loadImg(src2)

cosnole.log(img.height,img2.width)

) ( )

写法二:

async function loadImg1() 

const img1 = await loadImg(src1)

return img1

)

什么是宏任务和微任务

宏任务和微任务是event Loop中的两种任务,分别处在两种任务队列中。微任务是ES6语法规定的,宏任务是浏览器规定的。

宏任务

setTimeout,setInterval, Ajax, DOM事件;

微任务

Promise async/await

微任务执行时机比宏任务要早

全网最实用Python面试题大全(花费了整整7天时间整理出来的)

记得刚开始面试的时候很好奇公司面试官会问一些什么样的问题?会出一些什么样的笔试题?又该准备哪些知识点呢?我也会在网上搜,一搜出来一大片,但是仔细翻阅发现大部分是一些比较基础的Python题目。每一个岗位面试的体验都是不一样的,所有公司的Feature也是不一样的,甚至是每一个面试官带给你的Freestyle也是不一样的!


今天为大家分享一份超全面的python面试宝典PDF版,共收集整理了245个高频问题,涉及到python应用的方方面面,囊括从基础到高级的理论知识;web开发、数据库、测试、架构、爬虫方面的实战知识。代码清晰可复制。

希望能够帮助你在2022年的金九银十求职面试中脱颖而出,找到一份高薪工作。对于广大新手朋友们同样适用,可以了解下以后工作应用中的重点知识。赶紧收藏起来吧。

目录概览:

python基础知识点:

  • 文件操作

  • 模块与包

  • 数据类型

  • 企业面试题

python高级知识点:

  • 元类

  • 内存管理与垃圾回收机制

  • 函数

  • 设计模式

  • 面向对象

  • 正则表达式

  • 系统编程

  • 网络编程

Web:

  • Flask
  • Django
  • 爬虫

数据库:

  • MySQL
  • Redis
  • MongoDB
  • 测试
  • 数据结构
  • 大数据
  • 架构













这份完整版的Python全套PDF学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

以上是关于一天时间迅速准备前端面试|JavaScript——异步进阶的主要内容,如果未能解决你的问题,请参考以下文章

3 天时间自己造一个 React 框架

前端面试准备2----Javascript中的Undefined和null小结

前端开发node.jsvue安装环境安装node版本管理工具-nvm,耗时一天时间踩坑总结

别整天“学妹/学弟”了,清华学姐花7天时间吐血整理软件测试面试100题,自我检测一下把~

上海java架构师工资,Java面试题汇总

没做过微服务?两天时间玩透 SpringCloud 架构