2015-10-24 6 views
0

Я не могу изменить значение переменной outputString внутри обратного вызова.Невозможно изменить значение в обратном вызове javascript

var outputString; 

    client.get(key,function(err,value){ 

         outputString = "key="+key+" value="+value ; 
         console.log(outputString); 

        }) 

console.log(outputString); 

При печати значение outputString, он говорит, что "не определено"

+0

определяется 'ключ'? Возвращает ли значение 'value'? Проверьте 'if (err)' –

+0

Стоит прочитать это: [Как вернуть ответ от асинхронного вызова?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an -asynchronous вызова). Это одна из самых распространенных точек смятения в Javascript и асинхронных операциях. – jfriend00

+0

@ jfriend00 Хорошо. Поэтому элемент управления возвращается к console.log немедленно. Поэтому я не вижу измененного значения переменной. Поэтому невозможно достичь того, что я пытаюсь сделать. Я имею в виду доступ к переменной до ее обновления. Но я думаю, что это сработает, если я поставлю таймер. Я жду некоторое время, прежде чем печатать переменную – Zack

ответ

0

client.get() возвращает немедленно, так outputString не был установлен, когда последний console.log() называется. Функция обратного вызова не вызывается до следующего.

+0

№. это цель обратного вызова. Я устанавливаю значение переменной в обратном вызове, так что он изменяется до того, как элемент управления выходит из метода client.get – Zack

+0

Хорошо. Я думаю, вы правы. Позвольте мне сделать еще один анализ, а затем я помету ответ. Благодарю. – Zack

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