首页 > 解决方案 > 如何修改此代码以在循环内创建循环?

问题描述

我从一个网站上找到了这个脚本。当它以 2 秒的间隔跟踪 40 个 Instagram 帐户时,循环结束。如何修改脚本,使其等待 10 分钟,然后再重复相同的循环 3 次?基本上,它是:

  1. 关注账号并等待 2 秒 X40
  2. 等待 10 分钟
  3. 关注账号并等待 2 秒 X40
  4. 等待 10 分钟
  5. 关注账号,等待两秒 X40
  6. 等待 10 分钟
  7. ---循环结束---
 var TagFollow = document.getElementsByTagName("button");
 var SearchFollow = "Follow";
 var foundFollow;

 function clickfollow(){
 for (var i = 0; i < TagFollow.length; i++) {
     if (TagFollow[i].textContent == SearchFollow) {
     foundFollow = TagFollow[i];
     foundFollow.click(); 
     break;
      }
 }
 }
var i = 1;
function myLoop() {
   setTimeout(function() {
       console.log(new Date().toLocaleTimeString());
        clickfollow();
        //document.getElementsByTagName("ul")[3].scrollIntoView(false
         i++;
         if (i < 41) {
            myLoop();
          }
     }, 2000)
}
 myLoop();

提前致谢!

标签: javascriptloops

解决方案


您不需要嵌套循环。您可以在单个循环中“线性化”它们(我现在不记得正确的温度了)。所以基本上你想要循环,3 * 40 = 120并且在每 40 次之后你需要使用增加的延迟10 * 60 * 1000 = 600000。您可以通过使用模函数来帮助自己i%40。因为您从 1 开始,所以每第 40 次迭代是当i除以 40 的余数为零时。

所以基本上if (i < 41)改为if (i < 121)}, 2000)}, i%40 === 0 ? 600000 : 2000)


推荐阅读