3 回答
TA贡献1810条经验 获得超4个赞
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,大功告成。基于这个思想,在实际开发中大家可以定义一个模块,将这个串行打包,再也不用害怕回调地狱问题啦。
TA贡献1804条经验 获得超3个赞
1.首先定义一个保存函数执行顺序的数值:
var tasks = [];
2.再定义一个往数值里面加入串行化执行函数的函数:
function addTask(task){
tasks.push(task);
}
3.执行数组中下一个函数的函数:
function next(){
if(tasks.length > 0){
tasks.shift()();
}else{
return;
}
}
- 3 回答
- 0 关注
- 763 浏览
添加回答
举报