Promise的作用?
- 用于异步计算。
- 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。
- 可以在对象之间传递和操作Promise,帮助我们除了队列。
异步回调函数存在的四个问题
- 异步函数嵌套层次容易写的非常深,很容易陷入回调地狱,使得代码难以维护。
- 无法正常的使用return和throw(每个回调函数处于不同的栈)。
- 无法正常的解锁堆栈信息(每一次回调都处于系统层面的一个新的堆栈)。
- 在多个回调函数之间难以建立联系,一个回调一旦开始启动就再无办法对他进行操作。
Promise的3个状态
- pending: 待定–初始状态
- fulfilled: 实现–操作成功
- rejected: 被否决–操作失败
注:
(1)当Promise的状态发生改变时,就会触发.then()里的响应函数触发后续步骤。
(2)Promise的状态已经改变,不会在改变。
(3)每个.then()会返回一个新的Promise实例。
创建Promise实例
new Promise(
/* 执行器 executor */
function (resolve, reject) {
resolve(); //数据处理成功
reject(); //数据处理出
}
)
.then(function A(){
//成功,执行下一步。
},function B(){
//失败,失败处理逻辑。
});