1

Добрый день! У меня есть массив который загружается с базы данных. Если после загрузки массива отобразить его в консоль, то он без проблем отобразится. console.log(arr) Но, если вывести его первый элемент console.log(arr[0]), то в консоли отобразится undefined . Я попробовал этот элемент вывести через 3 секунды после загрузки страницы. setTimeout('console.log(arr[0])', 3000). Все без проблем сработало. Можете пожалуйста объяснить это явление.

Вот код:

var root = 'https://jsonplaceholder.typicode.com';
var arr = [];
$.ajax({
  url: root + '/posts',
  method: 'GET'
}).then(function(data) {
  arr.push(data[0]);
});
function func() {
 console.log(arr[0])
}
setTimeout(func, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Yernar
  • 1,220
  • 4
    Покажите код, мы не телепаты ) – Suvitruf - Andrei Apanasik Dec 25 '17 at 07:36
  • Suvitruf, Этот вопрос возник у меня давно. И я закончил свой проект с костылем )). Кода к сожелению нет( – Yernar Dec 25 '17 at 07:43
  • Тогда и помочь вам никто ничем не может. у меня есть массив - тогда уже был) – selya Dec 25 '17 at 07:47
  • Нет, не можем. Нужен конкретный код и конкретный пример. Ответить на вопрос в таком виде нет никакой возможности, легче погадать вам по фотографии вашей тещи. – wirtwelt Dec 25 '17 at 07:50
  • https://ru.stackoverflow.com/questions/751888 - так Вы не поняли, в чем там было дело? –  Dec 25 '17 at 07:50
  • @wirtwelt - Вы удивитесь, но я уже ответил на этот вопрос месяц назад –  Dec 25 '17 at 07:51
  • 1
    @Igor Да, увидел. Мое почтение, магистр )) – wirtwelt Dec 25 '17 at 07:52
  • @Igor, Я хочу понять, почему это происходит. – Yernar Dec 25 '17 at 07:52
  • 1
    @YernarSadybekov Мне, видимо, следовало объяснить этот "загадочный" феномен более подробно. Сейчас. –  Dec 25 '17 at 07:54
  • @YernarSadybekov Вы, скорее всего, запрашиваете данные для массива асинхронно. А первый элемент выводите сразу, не дожидаясь возвращения асинхронного запроса. В консоли же Вы наблюдаете массиве после заполнения его данными - консоль хранит на него ссылку и обновляется, отражая изменения в массиве/объекте. –  Dec 25 '17 at 08:00
  • 1
    @Igor Дополню. Чтобы посмотреть, что было в массиве в самом начале, выводите не сам массив, а JSON.stringify(arr), к примеру – selya Dec 25 '17 at 08:02
  • 1
    @Igor Напишите тогда уже развернутый ответ, раз в вопросе появился код) – selya Dec 25 '17 at 08:04
  • @YernarSadybekov Ваша дополнительная информация про три секунды укладывается в эту схему. –  Dec 25 '17 at 08:05
  • @YernarSadybekov - Добавьте, пожалуйста, код и дополнительную информацию в Ваш старый вопрос. –  Dec 25 '17 at 08:13
  • @selya - я добавил объяснение в старый вопрос. Мне надо было не выпендриваться, а сделать это месяц назад. –  Dec 25 '17 at 08:14

0 Answers0