2016-01-28 2 views
0

Я хочу изменить массив строк в функции обратного вызова, а также позволить ему быть доступным за пределами обратного вызова. На линии A консоль печатает объект. Однако на линии B консоль печатает неопределенные, и поэтому я не могу получить доступ к информации, которая была сохранена в обратном вызове. Что здесь происходит и как я могу это исправить?Изменение массива внутри функции обратного вызова и доступ к этому массиву извне

var A; 
tempService.route(
    function() { 
    A = [2]; 
    A[0] = "Bob"; 
    A[1] = "Joe"; 
    console.log(typeof A); //line A 
}) 
console.log(typeof A); //line B 
+0

«Джим, мне нужен источник этой цитаты. Запишите его на эту бумагу, когда найдете ее. Джек, вот имя парня, который сказал цитату, помещал ее в статью. Почему эта статья все еще не Приписывал? Я думал, что сказал Джим записать это на этой бумаге! - 15 минут спустя, Джим ищет этот лист бумаги, чтобы записать имя, которое он только что нашел. «Сохранено в обратном вызове»? Нет, * будет * сохранен в обратном вызове. Только когда-либо доступ к результатам async внутри обратного вызова (или функции, вызываемые из обратного вызова). – Amadan

ответ

0

В линии B, ваш обратный вызов не был назван так A все еще имеет свое первоначальное значение. Он будет называться когда-нибудь в будущем после запуска Line B.