JavaScript同步与异步
创始人
2024-04-18 11:14:13

在这里插入图片描述


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

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...