使用 Javascript 我需要能够:
1:将一定数量的相同函数(每个函数具有不同的参数)推送到数组中。
2:然后一一运行每个函数(在本例中只是参数/编号的警报)
3:在每个函数之后,我需要能够将该函数从数组中拼接出来
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。为了实现推送,你的函数应该是这样的:
// 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)