什么是回调地狱
要了解什么是回调地狱,首先要了解 什么是同步,什么是异步函数
同步函数:当一个函数是同步执行时,那么当该函数被调用时不会立即返回,直到该函数要做的事情全部做完之后才返回
异步函数:如果一个异步函数被调用时,该函数会立即返回尽管该函数规定的操作任务还没有完成。
function ran(bang) {
console.log('然起跑。。。。。');
setTimeout(function() {
console.log('然到达终点。。');
bang()
},4000)
}
function liang(bang) {
console.log('亮起跑。。。。。');
setTimeout(function() {
console.log('亮到达终点。。');
bang()
},5000)
}
function dong(bang) {
console.log('东起跑。。。。。');
setTimeout(function() {
console.log('东到达终点。。');
},8000)
}
ran(function() {
liang(function() {
dong()
})
}) // 此时形成了回调地狱
怎么解决回调地狱的问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function ran() {
return new Promise(function(door) {
console.log('然起跑。。。。。');
setTimeout(function() {
console.log('然到达终点。。');
door()
},1000)
})
}
function liang() {
return new Promise(function(door) {
console.log('亮起跑。。。。。');
setTimeout(function() {
console.log('亮到达终点。。');
door()
},1000)
})
}
function dong() {
return new Promise(function() {
console.log('东起跑。。。。。');
setTimeout(function() {
console.log('东到达终点。。');
// bang()
},1000)
})
}
ran().then(liang).then(dong)
</script>
</body>
</html>