promise链式调用,回调函数地狱,宏任务、微任务等

1.什么是promise的链式调用?

使用then函数返回新的Promise对象特性,一直串联下去

2.then回调函数中,return的值会传给哪里?

传给then函数生成的新Promise对象

3.Promise链式调用有什么用?

解决回调函数嵌套的问题。

1.什么是回调函数地狱?

在回调函数一直向下嵌套回调函数,形成了回调函数地狱

2.回调函数地狱问题

可读性差

异常捕获困难

耦合性严重

async函数和await

定义:async函数是使用async关键字声明的函数,async函数是AsuncFunction构造函数的实例,并且其中允许使用await关键字。async和await关键字让我们可以使用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用Promise。

async函数和await 捕获错误:

try...catch  1.try中包裹着可能产生错误的代码 2.接着调用catch模块,接收错误信息,如果try里某行代码报错后,try中剩余的代码不会执行了

时间循环 (evrnt loop)

概念:JavaScript有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理时间以及执行队列中的子任务。这个模型与其他语言中的模型截然不同,比如C和Java。

原因:JavaScript单线程(某一刻只能执行一行代码),为了让耗时代码不阻塞其它代码运行,设计了事件循环模型

定义:执行代码和收集异步任务的模型,在调用栈空闲时,反复调用任务队列里回调函数的执行机制,就叫事件循环

1.什么是时间循环?

执行代码和收集异步任务,在调用栈空闲时,反复调用任务队列里回调函数执行机制

2.为什么有时间循环?

JavaScript是单线程的,为了不阻塞JS引擎,设计执行代码的模型

3.JavaScript内代码如何执行?

执行同步代码,遇到异步代码交给宿主浏览器环境执行

异步有了结果后,把回调函数放入任务队列排队

当调用栈空闲后,反复调用任务队列里的回调函数

宏任务与微任务

ES6之后引入了Promise对象,让JS引擎也可以发起异步任务

异步任务分为:

宏任务:由浏览器环境执行的异步代码

微任务:由JS引擎环境执行的异步代码

1.什么是宏任务?

浏览器执行的异步代码

例如:JS执行脚本事件,setTimeout/setInterval,AJAX请求完成事件,用户交互事件等

2.什么是微任务?

JS引擎执行的异步代码

例如:Promise对象.then()的回调

3.JavaScript内代码如何执行?

执行第一个script脚本事件宏任务,里面同步代码

遇到宏任务/微任务交给宿主环境,有结果回调函数进入对应队列

当执行栈空闲时,清空微任务队列,再执行下一个宏任务,从1再来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值