Вполне вероятно, что когда вы 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)
в то время, вы должны получить правильную длину. (и данные есть).