不可阻挡的循环



我通过添加代码来改进问题。

坚持做一个不可阻挡的循环,请帮助我。

我正在调用 5 个 api 网址:

每个 url 都应该在一个特定的号码上调用:

URL1 should be called 4 times
URL2 should be called 10 times
URL3 should be called 8 times
URL4 should be called 9 times
URL5 should be called 6 times

请看下面的代码:https://www.codepile.net/pile/7Plo91MN

循环应该从 URL1 开始

,当它到达 URL5 时,它应该再次从 URL1 开始,它应该是不可阻挡的。

在这里,您需要添加您的 URL 调用代码。

let arrUrls = [
  ["URL1", 4],
  ["URL2", 10],
  ["URL3", 8],
  ["URL4", 9],
  ["URL5", 6]
];
let sendNum = 0;
function callUrl(url, rpt){
  for (let i = 0; i < rpt; i++) {
    // calling code
    console.log(`called ${url} - ${i}/${sendNum}`);
  }
};
let x = 0;
while(x<4) // Change this to while(true) for infinite loop
{
  sendNum = 0;
  arrUrls.forEach(u => {
    sendNum++;
    callUrl(u[0], u[1]);
  });
  x++;
}

根据客人的评论。这是一个对UI更友好的版本。为了方便起见,我还添加了 3 秒睡眠和停止按钮。

document.querySelector('button').addEventListener('click', (e) => {
  if(interval !== undefined) {
    clearInterval(interval);
    console.log('Stopped !!');
  }
});
let arrUrls = [
  ["URL1", 4],
  ["URL2", 10],
  ["URL3", 8],
  ["URL4", 9],
  ["URL5", 6]
];
let sendNum = 0;
let interval = undefined;
function callUrl(url, rpt) {
  let count = 0;
  for (let i = 0; i < rpt; i++) {
    // calling code
    count++;
  }    
  console.log(`called ${url} - ${count} times - on loop: ${sendNum}`);
};
interval = setInterval(() => // Change this to while(true) for infinite loop
{
  console.clear();
  sendNum++;
  arrUrls.forEach(u => {
    callUrl(u[0], u[1]);
  });
}, 3000);
<button>Stop Me</button>

在 PHP 中,您可以使用 InfiniteIterator 。令人惊讶的是,它是无限迭代的。

$urls = ['url1' => 4, 'url2' => 10, 'url3' => 8, 'url4'=> 9, 'url5' => 6];
$unstoppable = new InfiniteIterator(new ArrayIterator($urls));
foreach ($unstoppable as $url => $times) {
    for ($i = 0; $i < $times; $i++) {
        // call $url
    }
}

在您知道之前,您将被禁止访问这些 URL 中的每一个!

最新更新