@ref21

Как сохранить результат Ajax в переменную для дальнейшего использования?

'use strict';
// MODULE
let DataModule = (function() {

		let postsData;

		// Получить данные из JSON файла
		async function getData(callback) {

						let responce = await fetch('js/articles.json');

						if(responce.ok) {
								responce.json().then(function(json) {
										callback(json);
								});
						}
	
		};

		function setData(data) {
				postsData = data;
				console.log(postsData); // Вывод: {1: {…}, 2: {…}, 3: {…}}
		} 

		return {

				test: () => {
						getData(setData);
						console.log(postsData); // Вывод: undefined
				}

		}


}());
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
@i1yas
Не получится
getData(setData); // асинхронный запрос, т.е. данные будут получены не сразу
console.log(postsData); // выполняется сразу после вызова getData, не дожидаясь загрузки данных, поэтому undefined

Вам нужно в колбеке обрабатывать загруженные данные:
getData(data => {
   ...
});

И весь код, который взаимодействует с асинхронными запросами нужно писать с учетом этой логики
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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