Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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_Timing - Fatal编程技术网

Javascript在指定时间内运行循环

Javascript在指定时间内运行循环,javascript,timing,Javascript,Timing,我有一个与电话程序接口的函数,可以调用人。我想知道,有没有一种方法可以让我在一段时间内给别人打电话 我想运行如下循环: while(flag = 0){ call(people); if(<ten minutes have passed>){ flag = 1; } } while(标志=0){ 呼叫(人); if(){ flag=1; } } 任何帮助都将不胜感激。您可能需要setTimeout()功能 类似的方法应该可以工作(未经测试

我有一个与电话程序接口的函数,可以调用人。我想知道,有没有一种方法可以让我在一段时间内给别人打电话

我想运行如下循环:

while(flag = 0){
    call(people);

    if(<ten minutes have passed>){
        flag = 1;
    }
}
while(标志=0){
呼叫(人);
if(){
flag=1;
}
}

任何帮助都将不胜感激。

您可能需要
setTimeout()
功能

类似的方法应该可以工作(未经测试):

如果setTimeout()有问题,可以使用另一种方法:

var startTime=Date.now();
而((Date.now()-startTime)<60000){
callPeople();
}

您应该编写如下内容:

while(flag == 0){
   call(people);
}
setTimeout(function(){flag=1},60000);

不是电话推销员什么的。无论如何,我知道setTimeout,但如果有其他代码执行,它就不起作用:setTimeout(stop(),interval);while(notstop){}不起作用,因为while循环的执行将使setTimeout()永远无法工作。如果你不能让上面的方法发挥作用,我可能会获取循环外的当前时间,然后从循环内的当前时间中减去它:如果以毫秒为单位的结果大于60000,那么你已经超过了10分钟,应该退出循环。这正是我想做的!ThanksI编辑了我的答案,以展示如何执行替代方法。您需要将>60000切换到<60000 fyiTry
flag==0
,而不是
flag=0
。此外,在循环中使用
setTimeout()
,每次循环时都会生成超时。您可能希望将其和
标志
变量移到
之外,而
则会在循环的每次迭代中重置超时吗?而且,这不会在第一次执行后停止循环吗?我可能只是不清楚超时函数是如何工作的。提前感谢您的帮助这似乎是执行此任务的一种非常危险的方式(至少在性能方面)。从事件的角度来看可能更好:即,如果
被添加到
,然后打电话。这很有意义。尽管如此,我还是想要一个执行所有这些操作的时间间隔,我是否可以得到当前时间,然后减去,直到达到足够大的时间?
setInterval()
在一定时间后重复执行操作。因此,如果您希望每隔10秒呼叫(人员)
,您可以这样做。这样就可以在人中建立队列,然后每隔一段时间执行一次。
var startTime = Date.now();
while ((Date.now() - startTime) < 60000) {
    callPeople();
}
while(flag == 0){
   call(people);
}
setTimeout(function(){flag=1},60000);