Работает ли javascript на одном потоке? Если я объявляю глобальный массив и начинаю изменять его (например, удалять элементы) в обратном вызове AJAX и в то же время начинать изменять тот же массив в другой функции (вызываемой с помощью SetTimeOut) - существует ли риск состояния гонки?Является ли javascript однопоточным?
Я нашел эту тему: javascript race condition, кто-то сказал, что условия гонки никогда не бывают в javascript, потому что они всегда работают в одном потоке и одиночном стоп-кадре. Это зависит от того, как браузер реализует его или гарантированно ли он всегда однопоточным во всех браузерах?
Там могут быть гонки условия из-за задержек в сети, если вы работаете с AJAX, но не из-за самого JavaScript, потому что это единый -threaded. – pimvdb
Не совсем всегда: http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded – phazei