美文网首页
JavaScript同步和异步执行机制有哪些区别?

JavaScript同步和异步执行机制有哪些区别?

作者: 鹤子青云上 | 来源:发表于2022-06-14 18:06 被阅读0次

JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为 Javascript 这门脚本语言诞生的使命所致——JavaScript 是为处理页面中用户的交互,以及操作 DOM 而诞生的。比如我们对某个 DOM 元素进行添加和删除操作,不能同时进行。 应该先进行添加,之后再删除。

单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题是: 如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

为了解决这个问题,利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许JavaScript 脚本创建多个线程。于是,JS 中出现了同步和异步。

同步

前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。

异步

你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。他们的本质区别: 这条流水线上各个流程的执行顺序不同。

同步任务都在主线程上执行,形成一个执行栈。JS 的异步是通过回调函数实现的。一般而言,异步任务有普通事件(如 click、resize 等)、资源加载(如 load、error 等)

定时器(包括 setInterval、setTimeout 等)三种类型,异步任务相关添加到任务队列中(任务队列也称为消息队列)。

多学一招:JS 执行机制

1. 先执行执行栈中的同步任务。

2. 异步任务放入任务队列中。

3. 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务

结束等待状态,进入执行栈,开始执行。

相关文章

  • JavaScript同步和异步执行机制有哪些区别?

    JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为 Javascript ...

  • 前端使用异步的场景有哪些

    同步和异步的区别是什么 javascript语言是单线程机制。所谓单线程就是按次序执行,执行完一个任务再执行下一个...

  • js的事件循环

    javascript是一个单线程语言,javascript分为同步机制及异步机制,其中同步机制是放在栈中,而异步机...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • 深入浅出Javascript事件循环机制-上(转)

    浅薄概念 Javascript是单线程,执行任务时,分同步任务和异步任务,执行同步任务时放入栈中执行,执行异步任务...

  • 3. 异步编程

    异步编程和同步编程有什么区别? 同步在执行某个操作时,应用程序的主线程必须等待操作执行完成后才能继续执行。 异步在...

  • 异步和单线程 - 面试题

    1:同步和异步的区别是什么?分别举一个同步和异步的例子? 答案:同步(代码从上到下执行)会阻塞代码执行,而异步不会...

  • JavaScript-总结篇之异步和单线程

    同步和异步的区别是什么?分别举一个同步和异步的例子 一个关于setTimeout的问题 前端使用异步的场景有哪些 ...

  • IO模型

    同步,异步,阻塞和非阻塞的概念与区别 同步和异步从消息通知机制角度来说的。 两个任务 同步一直等,异步不等 阻塞和...

  • OkHttp源码解析 -- 同步异步处理

    前言: 使用OkHttp,执行网络请求时会有异步还是同步处理。先说下异步和同步的区别,同步并不是指在UI线程中执行...

网友评论

      本文标题:JavaScript同步和异步执行机制有哪些区别?

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