Javascript 如何使此函数被调用特定次数?
我想调用一个函数特定的次数。我希望在数组中调用函数的次数如下所示。我在数组中有一个for循环,我试图调用名为“thefunction”的函数 与数组项中的数字相同的次数。数组中的第一项是8,我首先希望调用“thefunction”函数8次,这意味着我应该看到警报消息“thefunction”将显示8次,然后是2次,因为2是数组中的下一项,然后是15次。我还想在每次通话之间暂停片刻。因此,在函数被调用8次之后,它将暂停片刻,然后再调用函数2次,然后再次调用函数15次,然后继续调用。这是到目前为止我的代码Javascript 如何使此函数被调用特定次数?,javascript,Javascript,我想调用一个函数特定的次数。我希望在数组中调用函数的次数如下所示。我在数组中有一个for循环,我试图调用名为“thefunction”的函数 与数组项中的数字相同的次数。数组中的第一项是8,我首先希望调用“thefunction”函数8次,这意味着我应该看到警报消息“thefunction”将显示8次,然后是2次,因为2是数组中的下一项,然后是15次。我还想在每次通话之间暂停片刻。因此,在函数被调用8次之后,它将暂停片刻,然后再调用函数2次,然后再次调用函数15次,然后继续调用。这是到目前为止我
var thearray = ['8','2','15'];
for(j=0; j < thearray.length; j++){
num = thearray[j];
var counter = 1;
(function foo() {
thefunction();// function I'm calling
if (counter < num) {
counter++;
setTimeout(foo, 400);
}
})();
}
function thefunction (){
alert('test');
}
var thearray=['8','2','15'];
对于(j=0;j
不能将for
循环与变量j
一起使用,也不能使用异步设置超时()。for
循环将运行到完成,并且j
变量在setTimeout()运行之前已经增加。这是尝试从异步函数中为
循环索引使用的典型问题
我不太明白您想要完成什么,所以我不确定建议使用什么代码。你有三个价值观。您是否尝试执行两个循环,一个用于遍历数组,另一个用于处理每个数组值?你能更好地解释一下最终输出应该是什么吗
我在这里猜测,但如果您尝试调用函数8次,然后暂停,然后2次,然后暂停,然后15次,然后完成,您可以这样做:
function runArray(arr, fn) {
// initialize array index - can't use for loop here with async
var index = 0;
function next() {
var cnt = +arr[index];
for (var i = 0; i < cnt; i++) {
fn(index, cnt);
}
// increment array index and see if there's more to do
++index;
if (index < arr.length) {
setTimeout(next, 400);
}
}
// start the whole process if the array isn't empty
if (arr.length) {
next();
}
}
var theArray = ['8','2','15'];
runArray(theArray, thefunction);
函数runArray(arr,fn){
//初始化数组索引-不能用于异步的循环
var指数=0;
函数next(){
var cnt=+arr[指数];
对于(变量i=0;i
工作演示:
仅供参考,如果您在数组中输入的内容是用作数字,那么最好将它们作为数字而不是字符串放入数组中。我已经让我的代码以任何一种方式工作,但是当你指的是数字时,使用数字更有效,而且更好。你的问题是什么?是的,没错。我想用数组来定义函数被调用的次数。因此,如果数组只有一个项,并且该项是数字10,那么该函数将被调用10次。如果我把另一个数字按到数组中,比如8,那么我有10,和8,那么函数被调用10次,然后暂停,然后8次。@Brandon-这就是我的函数所做的。你试过了吗?