Почему в JS функции не могу вернуть значение переменной, получаемой в callback'e?

Функция:
function processPost2(request) {
	var body = ''
	request.on('data', function(data) {
		body += data
	})
	request.on('end', function() {
		body = qs.parse(body) // string -> object
		console.log(body)
	})
	return body
}

Там где console.log(body) в консоль принтится то, что нужно. Но если я сделаю console.log(processPost2(request)) то видно, что функция возвражает пустую строку. Где что не так?
  • Вопрос задан
  • 3007 просмотров
Решения вопроса 1
morozovdenis
@morozovdenis
request выполняется асинхронно и в момент return body он ещё не выполнился

вот такой код
console.log(processPost2(request))
должен распечатать
'' - пустая строка
'<response body>' - ответ
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
romanzhak
@romanzhak
Mathematician
Используйте Deferred объект для решения проблемы.
e.g.: https://github.com/medikoo/deferred/blob/master/ex...

// Установка 
$ npm install deferred
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы