哈喽!大家好!我是木瓜太香,我又来嘞,今天来说说前端面试中经常别问到的 JS 事件环问题。 JS 事件环 JS 程序的运行是离不开事件环机制的,这个机制保证在发生某些事情的时候我们有机会执行一个我们事先预定好的函数,事情发生的时候 JS 会将相应的函数入栈执行然后出栈,但是关于事件环 ...
函数调用栈: call stack index.js 特点:先入栈,先执行。 从上往下执行,就代码的执行顺序 执行前入栈,执行后出栈。a先执行完 a先出栈,后续就是B出栈,接着就是整个全局上下文出栈,成为空栈。 任务队列: task queue 队列特点: 先进先出。 在单线程的js中,任务分为同步任务和异步任务。 同步任务:在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。 ...
2018-10-16 18:55 0 713 推荐指数:
哈喽!大家好!我是木瓜太香,我又来嘞,今天来说说前端面试中经常别问到的 JS 事件环问题。 JS 事件环 JS 程序的运行是离不开事件环机制的,这个机制保证在发生某些事情的时候我们有机会执行一个我们事先预定好的函数,事情发生的时候 JS 会将相应的函数入栈执行然后出栈,但是关于事件环 ...
EventLoop 宏任务和微任务 js中用来存储执行回调函数的队列包括2个不同的特定的队列,即宏队列和微队列 宏任务包括定时器、ajax异步回调、事件回调 微任务包括promise,mutation 需要明确的是,所有函数,不论宏任务队列微任务队列或者是同步执行的函数,最终都是要放到在栈 ...
一:调用栈是个什么鬼东西,它具有栈的属性--后进先出 先看一段简单的JS代码: const second = function(){ console.log('hello there'); } const first = function() { console.log('hi,first ...
事件循环与消息队列 因为js是单线程脚本语言,一般情况下代码是同步执行。也就是说js执行代码是一行一行向下执行的,前面没有执行完成是不会执行后面的代码的。 同步和异步的区别其实就在于需不需要排队的问题 同步:所有任务一视同仁,都得排队,先来后到; 异步 ...
1.Promise有个微任务队列(then),轮询到执行的时候,就会从队列中调出任务,放入主线程中去执行 2.任务中的微队列可以有多个 3.等级排序:主线程>微任务>宏任务(其最后执行setTimeout) 4.主线程中的任务执行 ...
上篇讲异步的时候,提到了同步队列和异步队列的说法,其实只是一种形象的称呼,分别代表主线程中的任务和任务队列中的任务,那么此篇我们就来详细探讨这两者。 一、来张图感受一下 如果看完觉得一脸懵逼,请继续往下看。 二、解析 我们还是拿上篇的例子做解析 step1:f1 ...
js 异步、栈、事件循环、任务队列 在开发中经常遇到js的异步问题,为了方便理解,记录下来,随时回顾。 以下的所有代码都是在浏览器环境下运行 在浏览器中js的运行是依赖浏览器js引擎来解析的,并且是在一定的runtime(运行时)的环境被调用,被执行。由于js引擎是单线程的,所以在 ...
很多项目可能都会涉及到任务队列来进行任务处理和维护的,那么需要使用到redis或者第三方库(使用redis)来实现任务队列,甚至需要控制并发量,但是对于saas部署来说使用redis可能会比较麻烦和成本提升,那么我们是否可以直接基于程序来使用内存进行任务队列管理,有兴趣可以了解一下这个包 ...