目录
4、回调地狱:在回调函数中再嵌套回调函数的情况称为回调地狱(是实现代码顺序执行的一种操作方式)
一、Promise对象
1、回调函数
当一个函数作为参数传入到另外一个函数,并且该函数不会立即执行;当满足某个条件时才执行该函数
function fn(){
console.log('山海')
}
setTimeout(fn,3000) //fn就是回调函数
2、同步任务
在主线程队列中,只有前一个任务完成后才会执行下一个任务
3、异步任务
不进入主线程队列,而是进入异步队列,前一个任务完成与否不影响后一个任务的执行(不阻塞后续任务执行的任务)
setTimeout(function (){
console.log('执行了回调函数')
},3000)
console.log(111)
// 111
// 执行了回调函数
如果按照代码编写的顺序,应该先输出“执行了回调函数”,再输出“111”。但实际输出为并不是。这种不阻塞后面任务执行的任务就叫做异步任务。
4、回调地狱:在回调函数中再嵌套回调函数的情况称为回调地狱(是实现代码顺序执行的一种操作方式)
setTimeout(function(){
console.log('日日复月月');
setTimeout(function(){
console.log('月月复年年');
setTimeout(function(){
console.log('年年复此生')
},1000)
},2000)
},3000)
// 日日复月月
// 月月复年年
// 年年复此生
这种回调函数中嵌套回调函数的情况就叫做回调地狱。回调地狱就是为是实现代码顺序执行而出现的一种操作,
(1)代码的可读性差、可维护性差
(2)代码的扩展性差
5、回调地狱的解决方法
(1)promise对象
(2)async和await函数