JavaScript采用单线程模式工作的原因:JavaScript设计之初是为了能够运行在浏览器实现页面交互,而实现页面交互的核心是操作DOM,这种模式就决定了它使用单线程模式,否则就需要解决复杂的多线程同步的问题。

这种模式的优点就是更安全、更简单,但是问题也很明显,比如遇到某个耗时的操作,那么就需要等待执行完才能往下执行。

为了解决这种问题,JavaScript语言将任务的执行模式分成了两种

  • 同步模式
  • 异步模式

同步模式

先把代码片段放入一个大的匿名函数中 - anonymous
然后依次入栈、出栈

异步模式

单线程是指代码的执行是单线程,而像setTimeout定时器这种webAPI,它本身是会有线程执行。要区分开代码的单线程执行。

回调函数:所有异步编程方式的根基

回调函数可以理解为一件你想做的事情,并且你明确知道这件事应该怎么做,步骤1、2、3等,但是你并不知道这件事情所依赖的任务什么时候完成, 所有最好的办法是把你的这件事情的步骤封装在一个函数里,交给所依赖的任务的执行者,当这个依赖任务完成后再执行这个函数即可。

对回调函数的理解:参考链接

Promise

回调地域

为了避免回调地域,commonJS社区率先提出Promise规范,es6在语言层面进行了标准化。

Promise使用常见误区


应该使用promise的链式调用:

异常捕获

p.then().catch() 中的catch是对整个链条异常的捕获。
而p.then(res => {}, err=>{})中的err => {}只是对当前promise异常的捕获。

因此,推荐使用catch方式。

Promise静态方法

Promise.resolve()
Promise.reject()

Promise并行执行

Promise.all()

Promise执行时序

当前位置

JavaScript同步与异步相关推荐

  1. JavaScript同步和异步

    大家好,我是wmingren,小伙伴们都知道JavaScript是单线程的语言,所谓的单线程呢就是指如果有多个任务就必须去排队,前面任务执行完成后,后面任务再执行.到这里我们就产生了一个疑问,既然是单 ...

  2. [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)

    一. 单线程 我们常说"JavaScript是单线程的". 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他 ...

  3. javascript等待异步线程完成_前端:什么是单线程,同步,异步?彻底弄懂 JavaScript 执行机制...

    javascript是按照语句出现的顺序执行的. js是一行一行执行的: let a = '1';console.log(a);let b = '2';console.log(b); 然而实际上js是 ...

  4. JavaScript 运行机制详解(理解同步、异步和事件循环)

    1.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...

  5. JavaScript异步编程【上】 -- 同步和异步、事件循环(EventLoop)、微任务和宏任务、回调函数

    文章内容输出来源:拉勾教育 大前端高薪训练营 前言 在我们学习JavaScript中,我们知道,JavaScript的执行环境是单线程的.所谓单线程是指一次只能完成一个任务,如果有多个任务,就必须排队 ...

  6. JavaScript中的异步、同步

    要理解JS中的异步.同步,需要先了解JS代码的执行过程和Event Loop. JavaScript代码的执行过程 程序需要执行的操作都会被放入Call Stack(A LIFO (Last In, ...

  7. 【JavaScript】JS执行机制--同步与异步

    目录 单线程 同步与异步 事件循环 单线程 JavaScript语言具有单线程的特点,同一个时间只能做一件事情.这是因为JavaScript脚本语言是为了处理页面中用户的交互,以及操作DOM而诞生的. ...

  8. JavaScript核心-定时器-异步同步等(三)

    8.1 常用键盘事件 事件除了使用鼠标触发,还可以使用键盘触发. 注意: 如果使用addEventListener 不需要加 on onkeypress 和前面2个的区别是,它不识别功能键,比如左右箭 ...

  9. html5异步编程,一位前端菜鸟对于JavaScript同步异步编程的了解

    来自一个前端菜鸟的对于JavaScript同步异步编程的了解,以下内容,仅供参考.大家知道,JavaScript的执行环境是单线程的,单线程的好处是执行环境简单,不用去考虑诸如资源同步,死锁等多线程阻 ...

最新文章

  1. 设计模式系列漫谈之二 - 工厂方法模式
  2. 认识与入门:Markdown
  3. MYSQL AB复制原理
  4. B端产品如何做好从1到10的架构搭建?
  5. shell脚本样本_Shell脚本
  6. python 获取天气_Python实现从百度API获取天气的方法
  7. 电子相册系统(四)用户登录
  8. php mysql cpu使用率_Mysql CPU占用高的问题解决方法小结
  9. 水系图一般在哪里找得到_雨水排水系统施工及设备要点详解!
  10. Visual studio插件:Visual Svn 替代工具--AnkhSvn
  11. ELk日志分析系统搭建
  12. hazy的面试小笔记之Java(持续更新)
  13. html+canvas 星空背景案例
  14. 计算机重装系统后无法连接网络连接,电脑用一键重装后不能连宽带解决方法
  15. 计算机控制课设串级回路,华北电力大学过程计算机控制课设ddc串级回路pid闭环.docx...
  16. 读hadoop权威指南关于hive
  17. 如何为3CX系统配置WatchGuard XTM防火墙
  18. [Nginx]Ngnix基础
  19. python——wxpy模块实现微信尬聊(基于图灵机器人)
  20. ECMAScript 6-11新特性(笔记)

热门文章

  1. 串行并行 同步异步通信
  2. 使用Python爬取网页图片
  3. MCU-51:单片机DS18B20温度报警器
  4. Python学习手册 - 基础知识汇总(精简版)
  5. 独立循环神经网络(indRNN)
  6. 查看exe和dll等二进制文件时间戳(生成时间)的工具与方法介绍
  7. red5 FAQ - 刚接触red5的可以看看
  8. 怎样缓解灾难性遗忘?持续学习最新综述三篇
  9. Python爬虫响应码为404错误
  10. Java数组:一维数组的定义和赋值