回调地狱:
多个串联的异步操作(多个异步操作的嵌套);
需求: 一秒钟之后输出1,然后2秒钟输出2,然后3秒之后输出3;
1、使用定时器实现:
多个异步操作的嵌套,形成了回调地狱,代码的可读性不高;
setTimeout(() => {
console.log(1);
setTimeout(() => {
console.log(2);
setTimeout(() => {
console.log(3);
}, 3000)
}, 2000)
}, 1000)
2、使用Promise实现:
回调地狱解决的关键:then的链式调用
function getDate() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(1);
resolve(2)
}, 1000)
})
}
getDate().then(value => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(value);
resolve(3)
}, 2000)
})
}).then(value => {
setTimeout(() => {
console.log(value);
}, 3000)
})