Обнаружение обновления глобальной переменной var в async-функции

У меня возникли проблемы с обновлением переменной в глобальной области. Я объявила переменную var state = 'notReady' ; function do ( state ) { // long / heavy webGL function state = 'ready' return state ; // состояние успешно изменяется на 'ready' }; $ . когда ( do ( state ) ). затем ( функция ( состояние ) { консоль . log ( состояние ); // этот журнал «готово» успешно возвращает состояние ; }); function previousFiredFunction () { function waitForState () { if ( state === 'ready' ) { // делать что-то, когда готово (это никогда не готово) } else { setTimeout ( waitForState , 200 ); } } waitForState (); } previousFiredFunction (); , то, когда функция завершена, я возвращаю переменную. Все это работает. Однако у меня есть еще одна функция, выполняемая асинхронно, где я жду обновления var, но она никогда не получает обновленноезначение состояния и цикл «notReady» бесконечно. Я ожидал «вернуть состояние», чтобы обновить переменную в глобальной области, но это не так. Как получить обновленную глобальнуюпеременную состояния для обновления в ранее запущенной функции?

state

javascript,jquery,global-variables,

1

Ответов: 1


В вашей doфункции у вас есть аргумент функции с тем же именем, что и ваша глобальная переменная ( state). Это маскирует глобальную переменную. И все «родные» переменные (например, строки и числа) передаются по значению, а не по ссылке.

Простое исправление, просто полностью потеряйте аргумент. Затем вы будете работать с глобальной переменной.

do

Также как в стороне, я действительно удивлен, что вы можете заставить этот код запускаться вообще, поскольку doэто ключевое слово в JavaScript . Я должен был изменить имя, чтобы даже запустить ваш код.

JavaScript, JQuery, глобальные переменные-,
Похожие вопросы