第一种方式直接遍历循环:这是最简单的方式。要串联执行多个函数,可以通过循环执行。代码如下://1leta1=function(next){console.log("a1");}leta2=function(next){console.log("a2");}leta3=function(next){console.log("a3");}让arr=[a1,a2,a3];arr.forEach(e=>e());第二种方式是按照洋葱结构构造代码结构,类似图:如何构造这样的代码,代码示例如下:leta1=function(next){console.log("a1");next()}让a2=function(next){console.log("a2");next()}leta3=function(next){console.log("a3");next()}让arr=[a1,a2,a3];让a=arr.reduce((a,b)=>{return()=>b(a)},()=>console.log("start"));A();观察源码,我们在定义函数的时候在函数旁边加了一个参数,next就是当前执行函数执行完后的下一个执行函数。经过reduce函数的处理,我们得到了函数a,函数a的函数体,我们可以用数学中的函数代入得到结果:functiona(){console.log("a3");(function(next){console.log("a2");(function(next){console.log("a1");(()=>console.log("start"))()})()})()}除了使用reduce,上面的代码还可以使用循环构造。代码如下:leta1=function(next){console.log("a1");next()}leta2=function(next){控制台。日志(“a2”);next()}leta3=function(next){控制台。日志(“a3”);next()}让arr=[a1,a2,a3];让a=()=>console.log("开始");for(leti=0;i
