JavaScript异步编程---同步模式、异步模式、回调函数

本文介绍了JavaScript的单线程模式及其引发的同步与异步编程需求。同步模式按照顺序执行任务,而异步模式允许后续任务在耗时操作完成前继续。异步操作通过回调函数实现,当任务完成后,回调函数被放入消息队列并在调用栈清空时执行。事件循环和消息队列在异步模式中起到关键作用。
摘要由CSDN通过智能技术生成

概述

众所周知,当前主流的JavaScript环境都是以单线程模式去执行代码的。
其原因和当时设计该语言的初衷有关系,最早这门语言就是运行在浏览器上的脚本语言,目的是为了实现页面上的动态交互,其核心就是dom操作,该点决定了他必须要使用单线程模式,否则就会出现很复杂的线程同步问题。
该种模式的有点很明显就是安全,但是缺点也很明显,万一遇到某个特别耗时的操作,后面的任务都需要排队等待前面执行完毕。这样就会导致出现假死的情况。
为了解决上述的问题,将任务执行的模式分成了同步模式和异步模式。
下面将要涉及到的内容有:

  1. 同步模式与异步模式
  2. 事件循环与消息队列
  3. 异步编程的几种方式
  4. Promise异步方案、宏任务/微任务队列
  5. Generator异步方案、Async/Await语法糖

同步模式

顾名思义就是代码按顺序依次执行,后一个任务只有在钱一个任务执行完后才会执行。
单线程的情况下,大多数任务都会以同步模式执行,注意这个同步是指排队执行,不是同时执行。
下面以一段代码分析同步模式的执行过程。

首先JavaScript会在内部调用栈压入一个匿名的调用,可以理解为将所有代码都放入一个匿名函数中准备执行。

"在这里插入图片描述
然后先执行代码中的console.log(“start”)方法,执行完成后弹出。
函数的声明不会产生任何的调用,所以执行会继续往下走,随后执行test2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值