Promise
1,回调地狱
多层回调函数的相互嵌套,就形成了回调地狱。示例如下:
2,Promise的基本概念
① Promise 是一个构造函数
- 我们可以创建 Promise 的示例
const p = new Promise() - new 出来的 Promise 实例对象,代表一个
异步操作
② Promise.prototype 上包含一个 .then() 方法
- 每一次 new Promise() 构造函数得到的实例对象,
- 都可以 通过原型链的方式 访问到 .then()方法,类如 p.then()
③ .then() 方法用来预先指定成功和失败的回调函数
- p.then(成功的回调函数 ,失败的回调函数)
- p.then(result=>{ },error=>{ })
- 调用 .then() 方法时,成功的回调函数是必选的,失败的回调函数是可选的
④ 在 Promise 的链式操作中如果发生了错误
- 可以使用 Promise.prototype.catch 方法进行捕获和处理
async / await
1,什么是 async/await
async / await是 ES8 引入的新语法,用来简化 Promise 异步操作 如果某个方法的返回值是Promise 实例对象那么我们就可以在前面用 await进行修饰,修饰完毕之后这个返回值就不再是Promise实例了,而是变成了一个真正的值。 注意:在 async 方法中,第一个 await 之前的代码会同步执行 ,await 之后的代码会异步执行。
EventLoop
JavaScript 是一门单线程执行的编程语言,也就是说同一时间只能做一件事情。 如果前一个任务非常耗时,则后续的任务就不得不一直等待,从而导致程序假死的问题。
2,同步任务和异步任务
为了防止某个耗时任务 导致程序假死 的问题,JavaScript 把待执行的任务分为了两类: ① 同步任务
- 又叫做
非耗时任务 ,指的是在主线程上排队执行的那些任务 - 只有前一个任务执行完毕,才能执行后一个任务
② 异步任务 - 又叫做
耗时任务 ,异步任务由 JavaScript 委托 给 宿主环境进行执行 - 当异步任务执行完成后,会
通知JavaScript 主线程 执行异步任务的回调函数 。
EventLoop 的基本概念
JavaScript 主线程从 任务队列 中读取异步任务的回调函数,放到执行栈中依次执行。这个过程是循环不断的,所以整个的这种运行机制又称为 EventLoop (事件循环)。
宏任务和微任务
1,什么是宏任务和微任务
2,宏任务和微任务的执行顺序
举例了解宏任务和微任务
|