Задать вопрос

Как функцией в JS возвратить массив (объект)?

Как функцией в JS возвратить массив (объект)?
Пробую возвратить - не получается. Вот код:
eca28a6df3494898a52a44f25dbbd7a5.jpg
$(document).ready( function() {

	console.log(getStreets('Вовчинець') );

});

function getStreets(city)
{
	$.post( 'export/getStreets.php', { misto_selo_key: city } )
		.done( function( data ) {
			var availableTags = data.split(",");
			var availableTagsArr = [];
			availableTags.forEach(function (street_name) {
				parts = street_name.split("&");
				availableTagsArr.push({Id: parts[0],Value: parts[1]});
			});
			console.log(availableTagsArr);
			return availableTagsArr;
		});
}
  • Вопрос задан
  • 8024 просмотра
Подписаться 4 Оценить Комментировать
Решения вопроса 2
Что вы собственно ждете, когда функция getStreets ничего не возвращает - это раз. А второй момент - это то, что загрузка данных может наступить после события ready
Ответ написан
Комментировать
@dilistinc Автор вопроса
Ребята, не в асинхронности дело, а в том что return срабатывает для $.post метода ( спасибо тебе tratotui), а не для getStreets(city), так как он находиться внутри метода.
Я поборол эту проблему следующим путем: перед $.post методом создал массив пустой, после неасинхронного запроса возвращаю массив внутри функции getStreets. Собственно всё. Очень благодарен за помощь!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
m0sk1t
@m0sk1t
SPA web-developer
М.Б. async=false?
Ответ написан
Комментировать
нужно листать поэлементно, есть готовые примеры кода (я гуглил var_dump для js :)
Ответ написан
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
никак это ajax, как вариант можно передавать callback функцию, например,

getStreets('Вовчинець', function(response) {
  console.log(response);
})

а в методе done вызывать её

function getStreets(city, callback) {

// ...

.done( function( data ) {
// ...
    callback(availableTagsArr);
}
Ответ написан
Комментировать
TekVanDo
@TekVanDo
Javascript Developer
$.post - асинхронный метод - и данные в колбэк done приходят позже чем срабатывает console.log (первый), т.ч. в данном конкретно примере вернуть нельзя. Слушайте событие или используйте промисы...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы