JavaScript同步与异步
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同步与异步相关推荐
- JavaScript同步和异步
大家好,我是wmingren,小伙伴们都知道JavaScript是单线程的语言,所谓的单线程呢就是指如果有多个任务就必须去排队,前面任务执行完成后,后面任务再执行.到这里我们就产生了一个疑问,既然是单 ...
- [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
一. 单线程 我们常说"JavaScript是单线程的". 所谓单线程,是指在JS引擎中负责解释和执行JavaScript代码的线程只有一个.不妨叫它主线程. 但是实际上还存在其他 ...
- javascript等待异步线程完成_前端:什么是单线程,同步,异步?彻底弄懂 JavaScript 执行机制...
javascript是按照语句出现的顺序执行的. js是一行一行执行的: let a = '1';console.log(a);let b = '2';console.log(b); 然而实际上js是 ...
- JavaScript 运行机制详解(理解同步、异步和事件循环)
1.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. Java ...
- JavaScript异步编程【上】 -- 同步和异步、事件循环(EventLoop)、微任务和宏任务、回调函数
文章内容输出来源:拉勾教育 大前端高薪训练营 前言 在我们学习JavaScript中,我们知道,JavaScript的执行环境是单线程的.所谓单线程是指一次只能完成一个任务,如果有多个任务,就必须排队 ...
- JavaScript中的异步、同步
要理解JS中的异步.同步,需要先了解JS代码的执行过程和Event Loop. JavaScript代码的执行过程 程序需要执行的操作都会被放入Call Stack(A LIFO (Last In, ...
- 【JavaScript】JS执行机制--同步与异步
目录 单线程 同步与异步 事件循环 单线程 JavaScript语言具有单线程的特点,同一个时间只能做一件事情.这是因为JavaScript脚本语言是为了处理页面中用户的交互,以及操作DOM而诞生的. ...
- JavaScript核心-定时器-异步同步等(三)
8.1 常用键盘事件 事件除了使用鼠标触发,还可以使用键盘触发. 注意: 如果使用addEventListener 不需要加 on onkeypress 和前面2个的区别是,它不识别功能键,比如左右箭 ...
- html5异步编程,一位前端菜鸟对于JavaScript同步异步编程的了解
来自一个前端菜鸟的对于JavaScript同步异步编程的了解,以下内容,仅供参考.大家知道,JavaScript的执行环境是单线程的,单线程的好处是执行环境简单,不用去考虑诸如资源同步,死锁等多线程阻 ...
最新文章
- 设计模式系列漫谈之二 - 工厂方法模式
- 认识与入门:Markdown
- MYSQL AB复制原理
- B端产品如何做好从1到10的架构搭建?
- shell脚本样本_Shell脚本
- python 获取天气_Python实现从百度API获取天气的方法
- 电子相册系统(四)用户登录
- php mysql cpu使用率_Mysql CPU占用高的问题解决方法小结
- 水系图一般在哪里找得到_雨水排水系统施工及设备要点详解!
- Visual studio插件:Visual Svn 替代工具--AnkhSvn
- ELk日志分析系统搭建
- hazy的面试小笔记之Java(持续更新)
- html+canvas 星空背景案例
- 计算机重装系统后无法连接网络连接,电脑用一键重装后不能连宽带解决方法
- 计算机控制课设串级回路,华北电力大学过程计算机控制课设ddc串级回路pid闭环.docx...
- 读hadoop权威指南关于hive
- 如何为3CX系统配置WatchGuard XTM防火墙
- [Nginx]Ngnix基础
- python——wxpy模块实现微信尬聊(基于图灵机器人)
- ECMAScript 6-11新特性(笔记)