массив возвращает длину 0, хотя имеет значения - PullRequest
0 голосов
/ 26 февраля 2019

, поэтому я пытаюсь выдвинуть элементы в массив, и кажется, что он возвращает длину 0, хотя в массиве есть элементы.

let calendarDates = []

async function getDates() {
    const response = await fetch('/calendars/fetch_dates')
    let res = await response.json()
    res.forEach(el => {
        calendarDates.push(el)
    })
}

getDates()
createCalendar(date, side)
.
.
.

function createCalendar(date, side) {
    console.log('createCalendar', calendarDates, "is array?", Array.isArray(calendarDates), 'length', calendarDates.length)
.
.
}

Мой console.log печатает календарь. Даты и длина: массив

журнал консоли для длины

консоль.log живет в отдельной функции

, так почему он возвращает 0 для длины?при попытке консольного журнала цикл forEach ничего не возвращает, так что я не вижу, что браузер показывает неправильное значение для удовольствия

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

getDates - асинхронная функция.Таким образом, если вы позвоните:

getDates()
createCalendar(date, side)

createCalendar может быть вызвано до успешного выполнения getDates ().Async, Promise действительно важны, вы должны практиковаться и внимательно изучать их.

0 голосов
/ 26 февраля 2019

Это поможет

async function Main() {
  let calendarDates = []
  calendarDates = await getDates();
  createCalendar(date, side)
}

async function getDates() {
  const response = await fetch('/calendars/fetch_dates')
  return await response.json();
}

function createCalendar(date, side) {
  console.log('createCalendar', calendarDates, "is array?", Array.isArray(calendarDates), 'length', calendarDates.length);
}


Main();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...