如果不满足条件,如何在while循环中断?

时间:2017-12-18 23:06:19

标签: javascript

我想实现对循环的检查,无论它是否无限。这就是我尝试做的事情,但不能使这项工作成功。我该如何打破循环?

function isInfiniteProcess(a, b) {
    while (a !== b) {
      a++;
      b--;
    }
}

isInfiniteProcess(2, 3)

如果它是无限的,我如何结束这个循环?

2 个答案:

答案 0 :(得分:3)

有一张我看过被使用过的支票(一种hacky)。它使用created() { this.getInfo(); }, methods: { getInfo() { let vm = this; let url = [my api url]; axios.get(url) .then(response => { console.log(response); }) .catch(error => { console.log(error); }) }, 来跟踪循环使用的时间。它不会检查循环是否真的无限,它只是检查它是否需要花费太长时间:

Date

这不太可靠,但它有助于检测循环是否无限。阈值(此处为function isInfiniteProcess(a, b) { var t0 = Date.now(); while (a !== b) { a++; b--; if(Date.now() - t0 > 5000) { // if this loop keeps running for 5 seconds and not finished yet return true; // break it and return true } } return false; // otherwise return false (the loop finished before 5 seconds has passed) } if(isInfiniteProcess(2, 3)) console.log("The loop may be infinite...");秒)完全取决于您选择。

注意:正如@ comment在{{3}}中提到的那样,您可以使用迭代计数器而不是时间增量:

5

至于另一种方法,threshhold(这里var counter = 0; while(...) { ... if(++counter > 1000000) { // after the 1000000th iteration return true; // assume the loop is infinite and break it } } 次迭代)真的由你来决定。

答案 1 :(得分:2)

如果a变得大于b,你的循环将永远变为无限。 所以要退出while循环你可以像这样使用break:

 function isInfiniteProcess(a, b) {
     while (a !== b) {
          a++;
          b--;
         if(a > b) break;
      }
      if(a > b) return true;
 }