JavaScript同步与异步
创始人
2024-03-23 08:00:32

在这里插入图片描述


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()

相关内容

热门资讯

告别语言壁垒!BLINBLIN... 当你还在为跨国会议上的语言障碍焦头烂额,为出国旅行时的沟通不畅手足无措,为外语学习时的发音不准苦恼不...
金观平:因地制宜推进节能降碳 近期召开的国务院常务会议对节能降碳工作作出重要部署,明确提出要更高水平更高质量做好节能降碳工作,加大...
2025回顾 | 2025年青... 2025年青岛改扩建高速公路近260公里建设规模创历史之最;1个重点项目建成通车,2个重点项目计划2...
委内瑞拉国民警卫队称已在全国范... 转自:北京日报客户端当地时间6日,委内瑞拉国民警卫队称,已在全国范围内部署兵力,同时,国家警察局也在...
刘旭:电力危机折射美国深层治理... 前段时间,在旧金山一场人工智能(AI)会议上,全美最大公用事业公司之一爱克斯龙的首席执行官巴特勒将美...