Это не проблема с переменной областью действия.Проблема здесь в том, что вы работаете с асинхронным потоком и не правильно думаете о потоке.
Позвольте мне объяснить:
Когда вы делаете .get
, вы запускаете параллельасинхронный процесс, который будет запрашивать информацию из браузера, но поток вашей основной программы будет продолжаться, поэтому, когда вы попадете в оператор "return
", ваш массив еще не был заполнен ответом от вашего метода get.
Вы должны использовать свой массив изнутри обратного вызова get, а не вне его, поскольку вы не можете гарантировать, что массив будет иметь необходимую информацию.
Имеет ли это какой-то смысл?
Дайте мне знать!
Дальнейшее объяснение
Согласно вашим комментариям, вы все еще делаете что-то вроде этого:
var results = MyParser(FEED_URL);// код, который использует results.pubArray
И вы не можете этого сделать.Даже если вы устанавливаете свой pubArray внутри обратного вызова .get
, вы пытаетесь использовать pubArray сразу после вызова MyParser
, и это до вызова обратного вызова .get
.Что вам нужно сделать, так это вызвать следующий шаг в логике вашей программы из обратного вызова .get
... это единственный способ убедиться, что pubArray
заполнен правильными данными.
Я надеюсь, что это проясняет ситуацию.