js四种异步方法(回调函数、Promise、Generator、async/await)


上篇介绍了回调函数:函数B作为函数A的入参,且函数A执行了函数B,此时我们把函数A叫做回调函数。

function A(callback) {
    console.log("A");
    callback();//函数A执行了函数B
}
function B() {
    console.log("B");
}
A(B);//函数B作为函数A的入参

如上一篇所说,要吃饭就要先做饭,要做饭就要先淘米,要淘米就要先买米,要买米就要去菜场(或者APP),去菜场就要坐车,坐车就要准备公交卡……如此形成回调地狱

A要执行B,B要执行C,C要执行D……那么执行函数A,就会有很多层级的回调,
随着调用的增加,代码嵌套层级越来越深,从而形成不断向右缩进的代码。这种不断向右增长(向右缩进)的现象我们把它叫做为回调地狱或末日金字塔

function doSomething(val,callback){
    console.log(val)
    callback()
}
doSomething('吃饭',() => {
    doSomething("做饭",() => {
        doSomething("淘米",() => {
            doSomething("买米",() => {
                doSomething("去菜场",() => {
                    doSomething("坐车",() => {
                        //通向地狱...
                    })
                })
            })
        })
    })
})

输出:

 

 

 缺点

1:可复用性低
2:可阅读性差
3:可维护性差
4:扩展性差

 promise解决了回调地狱:js四种异步方法(回调函数、Promise、Generator、async/await)

posted on 2022-09-07 15:31  Zoie_ting  阅读(381)  评论(0编辑  收藏  举报