-
蝴蝶不菲
1.首先我们定义一个保存函数执行顺序的数值:var tasks = [];2.再定义一个往数值里面加入串行化执行函数的函数:function addTask(task){tasks.push(task);}3.执行数组中下一个函数的函数:function next(){if(tasks.length > 0){tasks.shift()();}else{return;}}ok,大功告成,接下来定义几个测试函数:var task1 = function(){console.log('task1 is finished');next();}var task2 = function(){console.log('task2 is finished');next();}var task3 = function(){console.log('task3 is finished');next();}开始测试:addTask(task1);addTask(task2);addTask(task3);next()换个顺序:addTask(task1);addTask(task3);addTask(task2);next();ok,大功告成。基于这个思想,在实际开发中大家可以定义一个模块,将这个串行打包,再也不用害怕回调地狱问题啦。
-
拉莫斯之舞
定时函数可以这么写var a = function(){//逻辑setTimeout(() => {a()}, time)}
-
狐的传说
1.首先定义一个保存函数执行顺序的数值:var tasks = [];2.再定义一个往数值里面加入串行化执行函数的函数:function addTask(task){tasks.push(task);}3.执行数组中下一个函数的函数:function next(){if(tasks.length > 0){tasks.shift()();}else{return;}}