Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使此函数被调用特定次数?_Javascript - Fatal编程技术网

Javascript 如何使此函数被调用特定次数?

Javascript 如何使此函数被调用特定次数?,javascript,Javascript,我想调用一个函数特定的次数。我希望在数组中调用函数的次数如下所示。我在数组中有一个for循环,我试图调用名为“thefunction”的函数 与数组项中的数字相同的次数。数组中的第一项是8,我首先希望调用“thefunction”函数8次,这意味着我应该看到警报消息“thefunction”将显示8次,然后是2次,因为2是数组中的下一项,然后是15次。我还想在每次通话之间暂停片刻。因此,在函数被调用8次之后,它将暂停片刻,然后再调用函数2次,然后再次调用函数15次,然后继续调用。这是到目前为止我

我想调用一个函数特定的次数。我希望在数组中调用函数的次数如下所示。我在数组中有一个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-这就是我的函数所做的。你试过了吗?