2013-06-24 4 views
1

Допустим, у меня есть переменная, которая может быть изменена с помощью двух функций: одна вызывается периодически через setTimeout, а другой является обработчик события:Доступ к той же переменной из функции и обработчик события

var a = []; 
function foo() 
{ 
    var x = a.pop(); 
    // do something with x... 
    setTimeout(function(){ foo(); }, 1); 
} 
//... 
someElement.addEventListener("keypress", function(e){ a.push("some value"); }, true); 

ли этот код безопасен? Служит ли прослушиватель событий и foo в той же теме или в разных потоках? Если они работают в разных потоках, выполняется ли время выполнения javascript, чтобы гарантировать синхронизацию доступа к a?

ответ

3

JavaScript всегда однопоточный в браузерах. У вас не будет проблем с прослушивателем событий.

Я отсылаю вас к this excellent answer пользователем Jonathon

+0

Почему обратитесь и не закрывать? Кажется, это дубликат для меня. –

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