@1alexandr

GetJSON. Как получить данные из функции?

Здравствуйте, помогите пожалуйста решить проблему, не пойму почему возвращается undefined. Как можно получить нужное значение из этого метода?
var obj = {
  getCoords: function() {
		var self = this, arr;
		$.getJSON('data.json', function(data) {
			self.setArrays(data.array);
			arr = data;
		});
		return arr;
	}
};

console.log( obj.getCoords() );
  • Вопрос задан
  • 1245 просмотров
Решения вопроса 1
chlp
@chlp
фулстек
$.getJSON выполняется асинхронно. Есть 2 пути.
1. Хороший путь: передавать callback-функцию аргументом в .getCoords().
var obj = {
  getCoords: function(callback) {
    var self = this;
    $.getJSON('data.json', function(data) {
      self.setArrays(data.array);
      callback(data);
    });
  }
};

obj.getCoords(function (arr) {
    console.log(arr);
});


2. Плохой путь: использовать $.ajax с параметров async: false. Это легче, но пока будет идти вызов, весь JavaScript и UI браузера будет висеть.

3. Добрый путь: использовать Promise
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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