Как остановить время l oop кнопкой - JavaScript - PullRequest
0 голосов
/ 10 июля 2020

Привет, ребята, я ищу решение для этой программы:

var i = 0;
function timer(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds) {
            break;
        }
    }
}
$w.onReady(function () {
    while (i === 0) {
        dosomething();
        timer(1000);
    }
});

export function button5_click(event) {
    i = 1;
}

Мой вопрос в том, как я могу остановить это с помощью этой функции кнопки?

Ответы [ 3 ]

2 голосов
/ 10 июля 2020

Так можно сделать!

var flag = true;

let i = 0;
function loopFunc() {
    if (flag == true){
    i++;
        console.log( `Do something here ${i}` );
        setTimeout(loopFunc, 100);
    }
}

loopFunc();

function stop(){
    flag = false;
}
<button onclick="stop();">Stop Loop</button>
1 голос
/ 11 июля 2020

У вас может быть логическое значение, которое проверяется, истинно ли оно в while l oop, и если оно истинно, вернется while l oop. Добавьте прослушиватель событий, чтобы сделать это логическое значение истинным при нажатии кнопки. Не забудьте сделать логическое значение false в начале вашего скрипта.

0 голосов
/ 11 июля 2020

Используя свой код, вы можете сделать это

var stopLoop = false; // Add this to your code
var i = 0;
function timer(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds) {
            break;
        }
    }
}
$w.onReady(function () {
    while (i === 0) {
        if(stopLoop) break;
        dosomething();
        timer(1000);
    }
});

export function button5_click(event) {
    stopLoop = true; // add this to your code
    i = 1; // You can comment this out
}
...