2015-03-14 5 views
-4

Как сделать бесконечные вызовы функций в javascript?Бесконечные вызовы функций в javascript

func1(); 
console.log('next'); 
func1(); 
console.log('next'); 
func1(); 

//endless - infinite loop 

Без SetInterval, SetTimeout функции. Браузер должен реагировать на действия пользователя.

+0

Можете ли вы объяснить, что последним утверждением? Потому что 'setInterval' и' setTimeout' * позволяют * для отзывчивого браузера. –

+0

Каков предполагаемый результат? Каков контекст? Очень широкий вопрос. – bloodyKnuckles

+0

Я не могу использовать эти функции в скрипте. (SetInterval, SetTimeout). Я хочу бесконечный цикл с вызовом функции. Но браузер держится, когда я это делаю –

ответ

-1

Я могу сделать это с setImmediate.

https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate

реализация setImmediate через window.postMessage или process.nextTick или MessageChannel или script.onreadystatechange

https://github.com/YuzuJS/setImmediate/blob/master/setImmediate.js

+0

Эта функция недоступна изначально в Chrome, Firefox, Safari или Oprah. На самом деле это поддерживается только IE 10 IE. – robbmj

2

Вы можете использовать Web Worker.

window.onload = function() { 
 
    document.querySelector('#button').addEventListener('click', function() { 
 
     alert('not blocking the UI'); 
 
    }); 
 
}; 
 

 
(function() { 
 
    var code = document.querySelector('script[type="text/ww"]').textContent, 
 
     blob = new Blob([code], {type: 'text/javascript'}), 
 
     worker = new Worker(URL.createObjectURL(blob)); 
 

 
    worker.postMessage('foo'); 
 
}());
<script type="text/ww"> 
 
    function doWork() { 
 
     var i = 20000; 
 
     while (i-- > 0) { 
 
      foo(); 
 
     } 
 
    } 
 

 
    function foo() { 
 
     console.log('do the foo'); 
 
    } 
 

 
    self.addEventListener('message', doWork, false); 
 
</script> 
 
<button id="button">Click Me and View the Console</button>