В Angular 7 я получил список автомобилей из удаленной службы, а затем я хочу выполнить итерацию по этому списку после завершения вызова HTTP-GET. При отладке я вижу список автомобилей, но не могу получить к ним доступ. Если я распечатаю размер моего списка, он будет НЕ ОПРЕДЕЛЕН.
Как мне получить доступ к элементу в моем списке? мой код:
private async search(attribute: string): Promise<string> {
try {
const someCars: Car[] = await this.searchService(attribute).toPromise();
console.info(someCars.length); // --> length is undefined even if I can see all the elements in my list when I debug
for (const car of someCars) { // --> undefined
// print car
}
} catch (e) {
console.error("not found");
return null;
}
}
Если бы вы попробовали использовать Postman или Swagger, чтобы сначала проверить, работает ли ваш сервисный вызов.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Как предположил Александр, может ли это быть объект {}, который вы получаете от API, а не массив []?
Если это так, общий подход к получению длины объекта - это проверить длину ключей:
Object.keys(someCars).length
Удачи!
Да, спасибо! Это был объект, содержащий список, а не непосредственно список ... ой
Для устранения неполадок, если вы вместо этого используете стандартную, неасинхронную функцию и
subscribe()дляObservable<Car[]>вместоtoPromise(), сможете ли вы получить доступ к массиву автомобилей? Также вы уверены, чтоthis.searchService(attribute)напрямую возвращает массив, или это объект, у которого есть вложенное свойство для этого значения автомобильного массива?