美文网首页
怎么来理解Js是单线程的这句话?

怎么来理解Js是单线程的这句话?

作者: 风雅欢乐 | 来源:发表于2020-04-29 19:47 被阅读0次

Js是单线程指的是执行Js代码的只有Js引擎主线程。Js在js引擎中同步执行,永远都是运行执行栈最顶部的代码。那么js是怎么实现异步操作的呢?

首先,什么是异步函数呢?某些函数不会立即执行,它们需要等到某个时机到达之后才会执行,这样的函数称为异步函数。异步函数的执行时机,会被宿主环境控制(浏览器或node环境)。

Js引擎在执行代码过程中,碰到异步函数,它就会将它交给宿主环境来控制,本身转而继续执行其他代码。宿主环境在发现时机到达时,会将异步函数加入事件队列。事件队列是一块内存空间。

具体来说,宿主环境中还包括有计时器线程、网络请求线程、事件监听线程等,它们会分别来处理定时器回调函数、ajax请求回调函数、事件处理函数等的执行时机。并且所谓的执行时机也只是指处理函数加入到队列的时机。实际还需要等待执行栈清空后才可能轮到执行。

当Js引擎发现执行栈为空时,会将事件队列头部的代码加入执行栈中并执行。Js引擎的这种对事件队列取出执行方式,以及与宿主环境的配合,称为事件循环

相关文章

  • 怎么来理解Js是单线程的这句话?

    Js是单线程指的是执行Js代码的只有Js引擎主线程。Js在js引擎中同步执行,永远都是运行执行栈最顶部的代码。那么...

  • js 运行机制

    Js 是单线程吗?怎么理解单线程? 解:Js是单线程,单线程就是指在一个时间内只能做一件事情。 Js的任务队列是怎...

  • JS执行机制

    首先我们来看几个问题: 1.JS是单线程的么?2.JS有异步么?3.JS单线程怎么实现的的异步 1.JS是单线程的...

  • web前端面试题@十七(js的单线程和多线程)

    js单线程重点: JS 是单线程的,但是却能执行异步任务, 这主要是因为 JS 中存在事件循环(Event L...

  • 前端 | JS引擎的执行机制

    首先,请记住两点: JS 是单线程语言 JS 的Event Loop 是JS的执行机制.要想深入理解JS的执行,就...

  • js单线程理解

    js单线程理解 今天看了一些文章,让我对js单线程有了一些理解,甚至是颠覆性的,有空就记录一下,和大家分享一下,一...

  • js单线程、浏览器多进程、浏览器的渲染过程

    对于前端的新手来说,都知道js是单线程的,但对线程、进程等知识傻傻分不清,特别是对js单线程理解不够明白,今天我们...

  • JS事件循环

    深入理解javascript中的事件循环 (1)JS为何设计为单线程 js设计为单线程还是跟他的用途有关 试想一下...

  • js - 微任务 宏任务

    1. 概念理解 1.1 JavaScript是单线程语言:单线程: 同一个时间只能做一件事; js是单线程语言, ...

  • React面试遇到的问题,分享给大家

    1、Ajax、axios、fetch的区别 2、微任务、宏任务区别/理解,怎么调度js单线程任务的 强烈建议看这篇...

网友评论

      本文标题:怎么来理解Js是单线程的这句话?

      本文链接:https://www.haomeiwen.com/subject/linnwhtx.html