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)