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

javascript中的延迟

javascript中的延迟,javascript,facebook,delay,settimeout,Javascript,Facebook,Delay,Settimeout,我看到了很多关于如何在javascript中设置延迟或睡眠的问题。我尝试了所有我无法让代码正常工作的方法,就像我想的那样 所以我在facebook上收到了大约500个朋友的请求,一个接一个的接受有点烦人。所以我找到了一个脚本,它可以同时接受我所有的朋友请求。我尝试了设定的超时和睡眠代码,它们确实起作用,但我想在每个动作之间设置延迟。通过设置超时,它只会延迟整个脚本。所以我想这样做: 确认 1秒延迟 确认 1秒延迟 确认 1sec delay 这是我的原稿: var field = documen

我看到了很多关于如何在javascript中设置延迟或睡眠的问题。我尝试了所有我无法让代码正常工作的方法,就像我想的那样

所以我在facebook上收到了大约500个朋友的请求,一个接一个的接受有点烦人。所以我找到了一个脚本,它可以同时接受我所有的朋友请求。我尝试了设定的超时和睡眠代码,它们确实起作用,但我想在每个动作之间设置延迟。通过设置超时,它只会延迟整个脚本。所以我想这样做:

确认
1秒延迟
确认
1秒延迟
确认
1sec delay

这是我的原稿:

var field = document.getElementsByName("actions[accept]");
for (i = 0; i < field.length; i++)
    field[i].click() ;
var field=document.getElementsByName(“操作[accept]”);
对于(i=0;i
var field=document.getElementsByName(“操作[接受]”);
对于(i=0;i
您的问题的正确解决方案如下:

var field = document.getElementsByName("actions[accept]");
var index = 0;
function acceptFriends(){
    if(index<field.length){
      field[index].click();
      index++;
      setTimeout(acceptFriends,1000);
    }
}
acceptFriends();
var field=document.getElementsByName(“操作[accept]”);
var指数=0;
函数acceptFriends(){

如果(index这里有另一个解决方案,我们需要使用“i”参数调用immediate函数,以将其正确放入setTimeout:

var field = document.getElementsByName("actions[accept]");

for (var i = 0; i < field.length; i++) {
  (function(i){ 
    setTimeout(function() {
      field[i].click();
    }, i * 1000);
  })(i);
}
var field=document.getElementsByName(“操作[accept]”);
对于(变量i=0;i
但我建议使用上面的递归答案作为更好的解决方案,因为不在循环中使用函数是很好的做法。以下是参考:

再说一遍,setInterval是异步函数:)它不是很好:)我喜欢你的solution@MatzReckeweg这是不正确的,因为在这种情况下,“i”始终是“for”迭代器的最后一个定义,您需要将immediate函数与“i”一起使用作为论据,我写了上面的例子。@AnatolichMykhalo你测试过这个吗?哦,不,你没有,这是预期的,你的解决方案太复杂了,我现在需要验证它是否有效:)@MarkoMackic你忘了把输出放在这里,请学习一点javascript:)我的错误:)你是正确的,它正在工作,但它说的是正确的“不要在循环中生成函数”引用:)@MarkoMackic等待您删除“减号”":P谁说的?这个即时功能对于这个问题来说是一个很好的模式。编辑一些简单的答案,因为我误导自己在没有适当测试的情况下否决了你的答案:)我apologize@luschn我认为它比上面的递归更可读,为什么你认为在每个循环中调用匿名函数是不好的?问题是:为什么你会得到这样的结果很多朋友的请求,你为什么不检查你是否认识他们就接受所有的请求?基本的facebook推广:)你知道你不允许使用用户档案进行推广,对吗?只是说。用户帐户必须使用真人的真实姓名,不能用于商业目的。还有,friends的用户配置文件限制在5000个。谢谢,这对我来说太完美了!
var field = document.getElementsByName("actions[accept]");

for (var i = 0; i < field.length; i++) {
  (function(i){ 
    setTimeout(function() {
      field[i].click();
    }, i * 1000);
  })(i);
}