Promise解决的问题
1、回调地狱 + 异步同步事件调用顺序带来的双重伤害
嵌套的回调地狱
由此可见,对于Promise的执行很好的规范了对于复杂的嵌套回调的写法,并且对于异步事件的执行顺序也是更加清晰。
2、回调事件的分离
Promise有三种状态:未定(pending)、接受(fulfillment)和拒绝(rejection)。并且,只能由未定状态变为接受状态,或者由未定状态变为拒绝状态。
var promise = new Promise(function(resolve, reject) {
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
promise.then(()=>console.log(),()=>console.log)
只有调用resolve或reject回调函数时,这个Promise的状态才能从未定向其他两个状态改变。并且可以将异步操作的函数分离出来,提高了复用性。