2013-09-23 2 views
-2

Я пытаюсь сделать бесконечный цикл, но он работает только, если я включаю в него «предупреждение». Мой код выглядит следующим образом:Попытка бесконечного цикла на JavaScript

while(tocontinue){ 
    // Some code 
    alert('Accept to continue'); 
} 

На этом пути, пользователь должен нажать, чтобы скрыть оповещения (например, на Chrome), а затем цикл правильно продолжает сам по себе. Мне нужно реализовать это без предупреждения. Я также попытался это:

while(tocontinue){ 
    // Some code 
    tocontinue = false; 
    setTimeout(function(){tocontinue=true},500); 
} 

И с «window.setTimeout» тоже, и без слова «функции() {}», но он не работает. Я попробовал все: некоторые реализации на JavaScript функции сна(), вызов функции каждого X время с setInterval, ответы 1 и 3 на this post ...:/

Большое спасибо за ваше время.

+0

Что вы пытаетесь сделать? Вы можете реализовать бесконечный цикл с помощью 'while (true)' –

+0

Асинхронные задачи, например таймеры, не могут быть выполнены до тех пор, пока поток выполнения не будет простаивать, что 'while (true)' никогда не позволит. –

+0

Я сомневаюсь, что первый пример работает. ['continue'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/continue) зарезервировано. – C5H8NNaO4

ответ

3

setInterval() может быть более полезным здесь.

function updateLoop() { 
    //All the code goes here 
} 

setInterval(updateLoop,500); 
+0

Это решение не работает для меня, с или без скобок :(Я сказал, что уже пробовал. – DanielM

+0

Ну, я не уверен, что еще я могу сделать, не видя исходного кода. –

+0

Да, я поставил содержимое своего в то время как на новой функции, называемой «updateLoop», и я вызвал ее из функции setInterval, как Даниэль предлагает. – DanielM

4

Я пытаюсь реализовать генетический алгоритм, и я хочу, чтобы остановить его, когда я решаю (с кнопкой, которая ставит глобальную переменную «tocontinue» ложь). Между тем, я хочу бесконечный цикл.

Ну, вы не сможете комбинировать истинный бесконечный цикл с пользовательским взаимодействием, поскольку оба они будут зависимы от того, что один поток может работать с ними исключительно. Но вы можете приблизиться к почти мгновенному интервалу.

var interval = setInterval(function() { 
    // some code 
}, 10); 

Возможно, группируя несколько итераций вместе для каждого раунда:

var interval = setInterval(function() { 
    var limit = 5; 
    while (limit--) { 
     // some code 
    } 
}, 10); 

Но, интервал будет держать итерации происходит так быстро, как это возможно, но дает некоторое время простоя для взаимодействия с пользователем, как щелчок по конкретная кнопка до clear the interval.

document.getElementById('stopButton').addEventListener('click', function() { 
    clearInterval(interval); 
}, false); 

Пример: http://jsfiddle.net/coiscir/xZBTF/

+0

Большое спасибо, Джонатан! Есть так много вариантов, когда вы не уверены ... Я попробовал setTimeout с без слова function(), но не с setInterval. Извините за мою неопытность ... Ваше решение действительно элегантно и работает очень хорошо. – DanielM

-2
for(var I = 7; I >1; i+=3); 
console.log(i) 
0
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP'); 

function loadFile() { 

    reader.open('get', 'ccc.txt', true); 
    reader.onreadystatechange = displayContents; 
    reader.send(null); 
} 

function displayContents() { 

if(reader.readyState==4) { 

var el = document.getElementById('main'); 

el.innerHTML = reader.responseText; 

var data = el.innerHTML; 


} 

    } 
Смежные вопросы