错误使用Promise造成回调地狱的解决方法
Promise是解决回调地狱的方法,如果使用不当最后还是会造成回调地狱。
// 模拟三次异步任务
function r1() {
return new Promise((resolve, reject) => {
resolve("r1");
});
}
function r2() {
return new Promise((resolve, reject) => {
resolve("r2");
});
}
function r3() {
return new Promise((resolve, reject) => {
resolve("r3");
});
}
错误用法:
// 使用这种形式最终还是会形成回调地狱
r1().then((result) => {
console.log(result)
r2().then((result) => {
console.log(result);
r3().then((result) => {
console.log(result);
})
})
})
正确用法:
r1().then((result) => {
console.log(result) // r1
return r2()
}).then((result) => {
console.log(result); // r2
return r3()
}).then((result) => {
console.log(result); // r3
})