Promise 解决es5中的回调地狱
什么是回调地狱?
function a() {
进行业务逻辑操作
function b() {
进行业务逻辑操作
function c() {
进行业务逻辑操作
}
}
}
这就是回调地狱。。。。。。
Promise
let state = 1
function state1(resolve, reject) {
console.log('start');
if (state == 1) {
resolve('start 成功')
} else {
reject('start 错误')
}
}
function state2(resolve, reject) {
console.log('next');
if (state == 1) {
resolve('next 成功')
} else {
reject('next 错误')
}
}
function state3(resolve, reject) {
console.log('end');
if (state == 1) {
resolve('end 成功')
} else {
reject('end 错误')
}
}
new Promise(state1).then(function (val) {
console.log(val); // val是返回值
return new Promise(state2)
}).then(function (val) {
console.log(val); // val是返回值
return new Promise(state3)
}).then(function (val) {
console.log(val); // val是返回值
})
.all()方法 在state1,state2执行完之后 ,然后再执行state3
Promise.all( [ new Promise(state1) , new Promise(state2) ] ).then (state3)
.race()方法 在state1,state2任意一个执行完之后 ,然后再执行state3
Promise.all( [ new Promise(state1) , new Promise(state2) ] ).then (state3)