javascript – 将函数推入数组 – 循环和拼接?

使用Javascript我需要能够:

1:将一定量的相同功能(每个参数不同)推入阵列.

2:然后逐个运行每个函数(对于此示例,只是参数/数字的警报)

3:在每个函数之后我需要能够从阵列中SPLICE那个函数

4:每次检查数组长度 – 一旦数组再次为空 – 提醒用户它已完成

现在我似乎能够完成任务1,2和4,但我在运行后如何从数组拼接出来的功能 – 有人能帮忙吗?由于我无法删除该功能,因此在调用所有功能后,我永远不会收到“完成”警报

到目前为止,我的javascript代码是:

// Create empty array
var array = [];

// Push functions into array - dynamic amount and could be any amount of functions
array.push(func(1));
array.push(func(2));
array.push(func(3));

// Call array manager function after pushing array
arrayManager();

// Array manager function to splice and detect when finished
function arrayManager() {
    if (array.length < 1) {
        alert("done");
    }
    else {
    //////////////////////////////////
    // << THIS IS WHERE I DON'T KNOW HOW TO SPLICE THE ITEM FROM THE ARRAY
    //////////////////////////////////
    }
}

// Function for array objects - alert passed parameter
function func(num){
    alert(num);
}
最佳答案
首先,你现在不是将函数推入数组,而是执行func.要实现推送,您的func应如下所示:

// Function for array objects - alert passed parameter
function func(num){
  return function(){
    alert(num);
  }
}

现在,如果您的函数是同步的,您可以简单地迭代数组

for(var i in arr){
  arr[i]();
}
console.log('done');

如果我们正在处理异步函数,那么他们需要有一个回调:

// Function for array objects - alert passed parameter
function func(num){
  return function(callback){
    alert(num);
    callback();
  }
}

然后你可以使用计数器并行运行.

var count = arr.length;
for(var i in arr){
  arr[i](function(){
    if(--count === 0){
      console.log('Done');
    }
  });
}

或按顺序:

function run(){
  var fn = arr.shift();
  if(!fn){
    console.log('Done');
  } else {
    fn(run);
  }
}
run();

转载注明原文:javascript – 将函数推入数组 – 循环和拼接? - 代码日志