3 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
1.首先我們定義一個保存函數(shù)執(zhí)行順序的數(shù)值:
var tasks = [];
2.再定義一個往數(shù)值里面加入串行化執(zhí)行函數(shù)的函數(shù):
function addTask(task){
tasks.push(task);
}
3.執(zhí)行數(shù)組中下一個函數(shù)的函數(shù):
function next(){
if(tasks.length > 0){
tasks.shift()();
}else{
return;
}
}
ok,大功告成,接下來定義幾個測試函數(shù):
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,大功告成。基于這個思想,在實際開發(fā)中大家可以定義一個模塊,將這個串行打包,再也不用害怕回調(diào)地獄問題啦。

TA貢獻1804條經(jīng)驗 獲得超3個贊
1.首先定義一個保存函數(shù)執(zhí)行順序的數(shù)值:
var tasks = [];
2.再定義一個往數(shù)值里面加入串行化執(zhí)行函數(shù)的函數(shù):
function addTask(task){
tasks.push(task);
}
3.執(zhí)行數(shù)組中下一個函數(shù)的函數(shù):
function next(){
if(tasks.length > 0){
tasks.shift()();
}else{
return;
}
}
- 3 回答
- 0 關(guān)注
- 819 瀏覽
添加回答
舉報