一、基本介绍
- Promise 是承诺的意思,理解下来就是在一段时间内,等待一件事情的完成,在浏览器环境中,这个一段时间就是异步操作的表现。
- 区分同步和异步:当我们调用一个方法之后,需要等待这个操作返回结果,就是异步操作,否则为同步操作。
二、为什么需要Promise
1. 常见的异步操作
- 宏任务:setTimeout、ajax、 脚本
<script>
、MessageChannel(消息通道)、ui渲染、DOM事件 - 微任务:Promise.then(原生的Promise)、mutationObserver(h5提供的api)
2. 异步回调存在的问题
- 回调地狱、恶魔金字塔:当需要做多个异步操作时会导致代码多层嵌套,并且代码不整洁、不易阅读
- 并行结果:多个异步任务未分前后顺序执行时,需要等待任务都完成后才可继续执行后续逻辑时,无法并行执行任务节省时间