Полный массив присутствует в консоли, но array.length = 0 - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь понять, почему, когда я присваиваю переменную с помощью вызова ax ios переменной, запись в консоль этой переменной покажет полный объект, но его длина будет равна нулю.

Таким образом, когда я пытаюсь запустить forEach для результатов, нет никакой любви, которую нужно иметь.

getNumberOfCollections() {
  let results = queries.getTable("Quality"); // imported function to grab an Airtable table.
  console.log(results); // full array, i.e. ['bing', 'bong', 'boom']
  console.log(results.length); // 0
  results.forEach((result) =>{ // no love });
}

1 Ответ

2 голосов
/ 22 марта 2020

Вполне вероятно, что когда вы console.log массива, массив все еще пуст.

console.log(results); // full array, i.e. ['bing', 'bong', 'boom']
console.log(results.length); // 0

, когда console.log(results.length) запущен, он делает console.log(0), и поэтому 0 распечатывается.

Когда запускается console.log(results), собирается распечатать массив results позже. Этот массив заполняется позже, когда наконец запускается console.log(). (так что console.log не является синхронным - он напечатает что-то чуть позже.)

Вы можете попробовать

console.log(JSON.stringify(results));

, и вы, скорее всего, увидите пустой массив, потому что JSON.stringify(results) немедленно оценивает, что это такое, и превращает его в строку в это текущее время, а не позже .

Похоже, вы извлекаете некоторые данные. Правильный путь обычно - обратный вызов или обработчик выполнения обещания:

fetch(" some url here ")
  .then(response => response.json())
  .then(data => console.log(data));

, поэтому у вас не будет данных до тех пор, пока не будет вызван обратный вызов или «обработчик выполнения». Если вы console.log(results.length) в то время, вы должны получить правильную длину. (и данные есть).

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