iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue.js的事件循环机制如何理解
  • 633
分享到

vue.js的事件循环机制如何理解

2023-06-29 09:06:38 633人浏览 独家记忆
摘要

这篇文章主要介绍了vue.js的事件循环机制如何理解的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue.js的事件循环机制如何理解文章都会有所收获,下面我们一起来看看吧。一、事件循环机制介绍  &n

这篇文章主要介绍了vue.js的事件循环机制如何理解的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue.js的事件循环机制如何理解文章都会有所收获,下面我们一起来看看吧。

一、事件循环机制介绍       

JS是单线程的语言,浏览器和node.js定义了各自的Event Loop(事件循环机制)则是用来解决异步问题。将程序分为“主线程(执行栈)”与“Event Loop线程”,“主线程”自上而下依次执行同步任务,“Event Loop线程”将异步任务推入宏任务队列与微任务队列去执行。

事件循环机制从整体上告诉了我们 javascript 代码的执行顺序 Event Loop 即事件循环,是指浏览器或node 的一种解决javaScript 单线程运行时不会阻塞的一种机制,也就是我们经常使用异步的原理。“Event Loop线程”先执行宏任务队列,然后执行微任务队列,若微任务在执行过程中产生了新的微任务,则继续执行微任务,微任务执行完毕后,再回到宏任务中进行下一轮循环。即继续先执行宏任务队列,再执行 微任务队列。

宏任务:

script(整体代码)/setTimeout/setInterval/setImmediate/ I/O / UI Rendering

微任务:

process.nextTick()/Promise/Async、Await(实际就是Promise)/MutationObserver(HTML5新特性)

setTimeout 和 setInterval 等都是任务源,真正进入任务队列的是他们分发的任务。

优先级

setTimeout = setInterval 一个队列setTimeout > setImmediate process.nextTick > Promise

二、经典事件循环面试题

在下面这段代码是面试中关于这类问题的经典考题,其中包含了同步、异步任务,几个输出的先后顺序是怎样的。

setTimeout(function(){    console.log('1')});new Promise(function(resolve){    console.log('2');    resolve();}).then(function(){    console.log('3')});console.log('4');// 2,4,3,1

首先进行任务划分,同步任务:new Promise()console.log('4')宏任务setTimeout()微任务Promise().then()Event Loop依次将同步任务推入执行栈并执行,当遇到宏任务或微任务时,推到宏任务或微任务队列中。先执行同步任务,同步队列执行完毕,会去微队列取任务,直到微队列清空,再去宏队列取任务执行。故此段程序执行顺序为:

new Promise()console.log('4')Promise().then()setTimeout()

 2.示例2

vue.js的事件循环机制如何理解

 答案输出为:async2 end => Promise => async1 end => promise1 => promise2 => setTimeout

示例3

        mounted(){            this.test();         },        methods:{            test(){                console.log('script start');                 this.async1();                 setTimeout(function() {                 console.log('setTimeout')                }, 0);                 new Promise(resolve => {                    console.log('Promise')                    resolve()                })                .then(function() {                console.log('promise1')                })                .then(function() {                console.log('promise2')                })                 console.log('script end')            },            async async1() {                await this.async2()                    console.log('async1 end')            },            async async2() {              console.log('async2 end')            },        }

新版的chrome浏览器中不是如上打印的,因为chrome优化了,await变得更快了,输出为:

// script start => async2 end => Promise => script end => async1 end => promise1 => promise2

vue.js的事件循环机制如何理解

分析这段代码:

  • 执行代码,输出script start。

  • 执行async1(),会调用async2(),然后输出async2 end,此时将会保留async1函数的上下文,然后跳出async1函数。

  • 遇到setTimeout,产生一个宏任务

  • 执行Promise,输出Promise。遇到then,产生第一个微任务

  • 继续执行代码,输出script end

  • 代码逻辑执行完毕(当前宏任务执行完毕),开始执行当前宏任务产生的微任务队列,输出promise1,该微任务遇到then,产生一个新的微任务 

  • 执行产生的微任务,输出promise2,当前微任务队列执行完毕。执行权回到async1 

  • 执行await,实际上会产生一个promise返回,即

  • let promise_ = new Promise((resolve,reject){ resolve(undefined)})

  • 执行完成,执行await后面的语句,输出async1 end 最后,执行下一个宏任务,即执行setTimeout,输出setTimeout

  • 注意以上分析是旧版浏览器await执行慢导致async1在微任务执行后执行。

关于“vue.js的事件循环机制如何理解”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“vue.js的事件循环机制如何理解”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: vue.js的事件循环机制如何理解

本文链接: https://www.lsjlt.com/news/323967.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue.js的事件循环机制如何理解
    这篇文章主要介绍了vue.js的事件循环机制如何理解的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue.js的事件循环机制如何理解文章都会有所收获,下面我们一起来看看吧。一、事件循环机制介绍  &n...
    99+
    2023-06-29
  • 一篇文章带你了解vue.js的事件循环机制
    目录一、事件循环机制介绍       二、经典事件循环面试题总结一、事件循环机制介绍    ...
    99+
    2024-04-02
  • Node.js 事件循环的原理与机制
    ...
    99+
    2024-04-02
  • 深入了解Javascript的事件循环机制
    目录单线程的Javascript同步 vs 异步 宏任务 vs 微任务定时器To Be Continued单线程的Javascript JavaScript是一种单线程语言,它主要用...
    99+
    2024-04-02
  • JS的事件循环执行机制详解
    目录前言JS语言的特点JS中同步和异步的使用事件循环是什么?事件循环执行过程微任务和宏任务的区别JS执行/运行机制最后前言 在前端开发中,涉及到JS原生的使用原理是非常重要的知识点,...
    99+
    2023-05-19
    JS事件循环执行机制 JS事件循环 JS事件
  • 如何理解Nodejs中的事件循环
    这期内容当中小编将会给大家带来有关如何理解Nodejs中的事件循环,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Node事件循环Node底层使用的语言libuv,是一个c...
    99+
    2024-04-02
  • 一文详解JS中的事件循环机制
    目录前言1、JavaScript是单线程的2、同步和异步3、事件循环前言 我们知道JavaScript 是单线程的编程语言,只能同一时间内做一件事,按顺序来处理事件,但是在遇到异步事...
    99+
    2024-04-02
  • 实例详解JS中的事件循环机制
    目录一、前言二、宏、微任务三、Tick 执行顺序四、案例详解1.掺杂setTimeout2.掺杂微任务,此处主要是Promise.then3.掺杂async/await一、前言 之前...
    99+
    2024-04-02
  • 深入了解Node事件循环(EventLoop)机制
    主线程从"任务队列"中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)。下面本篇文章就来带大家掌握Node.js中的eventloop,希望对大家有所帮助!虽然js可以在浏览器...
    99+
    2023-05-14
    javascript Node.js 面试 前端
  • Node事件循环机制是什么
    这篇文章主要介绍“Node事件循环机制是什么”,在日常操作中,相信很多人在Node事件循环机制是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node事件循环机制是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-05
  • Javascript前端事件循环机制详细讲解
    目录一、消息队列和事件循环1.单线程处理机制2.事件循环机制3.消息队列4.IO线程5.页面使用单线程的缺点二、setTimeout1.浏览器怎么实现 setTimeout2.使用s...
    99+
    2022-12-30
    JavaScript事件循环机制 JS循环机制
  • JavaScript中的事件循环机制及其运行原理
    javascript是单线程的非阻塞的脚本语言 单线程 只有一个主线程来处理任务。 非阻塞 JS引擎执行异步任务时,不会一直等待返回结果,主线程会挂起(pending)这个任务,继续...
    99+
    2023-05-18
    JavaScript事件循环机制 JS事件循环机制
  • 如何从Javascript事件循环看出Vue.nextTick的原理和执行机制
    今天就跟大家聊聊有关如何从Javascript事件循环看出Vue.nextTick的原理和执行机制,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。抛砖...
    99+
    2024-04-02
  • JavaScript 的setTimeout与事件循环机制event-loop
    目录1.先说说我们都知道的setTimeout2.再讲讲我们可能不知道的setTimeoutevent-loop3. node中的时间循环执行顺序4. 关于事件循环中的promise...
    99+
    2024-04-02
  • 关于js的事件循环机制剖析
    前言 众所周知, JavaScript是单线程这一核心,可是浏览器又能很好的处理异步请求,那么到底是为什么呢?其中的原理与事件循环机制大有关系。 在探索事件循环之前,我们得先了解浏览...
    99+
    2024-04-02
  • Node.js中事件循环的机制是什么
    本篇内容介绍了“Node.js中事件循环的机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先看一个demo:setTimeout((...
    99+
    2023-06-17
  • 简单聊聊JavaScript的事件循环机制
    目录前言概念举个栗子TIP再次举个栗子总结前言 JavaScript是一门单线程的弱类型语言,但是我们在开发中,经常会遇到一些需要异步或者等待的处理操作。 类似ajax,亦或者ES6...
    99+
    2024-04-02
  • JavaScript 关于事件循环机制的刨析
    目录前言:一、事件循环和任务队列产生的原因:二、事件循环机制:三、任务队列:3.1 任务队列的类型:3.2 两者区别:3.3 更细致的事件循环过程四、强大的异步专家 process....
    99+
    2024-04-02
  • node.js事件循环机制及与js区别详解
    目录一、是什么二、流程三、题目一、是什么 在浏览器事件循环(opens new window)中,我们了解到javascript在浏览器中的事件循环机制,其是根据HTML5定义的规范...
    99+
    2024-04-02
  • nodejs中事件循环机制的示例分析
    这篇文章主要介绍了nodejs中事件循环机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端开发离不开JavaScript,Javascript是一种web前端语...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作