该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
  • npm install

模块一函数式编程简答题

第一题

JS异步编程

在JS的核心线程当中, 负责执行代码的线程只有一个, 而这种单线程模式的优点就是更安全, 更简单; 但是缺点也很明显,如果遇到一个特别耗时的任务,那个这个任务之后的任务就必须等待这个执行完毕后才能执行, 出现假死的情况 为了解决这种情况JS分出了两种模式:

同步模式:

  • 特点: 程序的执行顺序与代码的编写顺序完全一致(排队执行)

异步模式:

  • 特点: 不会等待这个任务结束才去开始下一个任务;对于耗时操作开启过后就立即去执行下一个任务;后续逻辑一般会通过回调函数的形式定义

Event Loop事件循环

  • Event Loop的作用就是负责监听调用栈和消息队列。当调用栈中的任务全部结束时, Event loop就会从消息队列中取出第一个回调函数压入到调用栈, 当消息队列发生变化时, 若调用栈没有任务在执行, Event loop就会将消息队列中的第一位回调函数取出来压入调用栈中, 开启新的执行

宏任务与微任务:

  • 宏任务:当前调用栈中执行的代码成为宏任务,包括 主代码快 ,定时器
  • 宏任务是消息队列里的任务,常见的接口请求、定时器等异步任务都是宏任务
  • 微任务:宏任务执行完,在下一个宏任务开始之前需要执行的任务,可以理解为回调函数
  • 微任务是基于当前任务产生而随当前任务结束后立即执行的任务,所以也是异步任务, 但是不需要通过EventLoop监测,通过消息队列取出并压入执行栈中再执行; 像通过Promise、MutationObserver、process.nextTick产生的任务都为微任务
执行机制
  1. 在执行栈中执行一个宏任务
  2. 执行过程中遇到微任务,将微任务添加到消息队列中
  3. 当前宏任务执行完毕,立即执行微任务队列中的任务
  4. 微任务执行完毕后,把下一个宏任务放到消息队列中,通过Event Loop放到调用栈中执行

空文件

简介

cheng.zhang-FP-homework 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化