Я учусь очищать электронные приложения и получаю странное поведение на консоли при попытке перебрать массив. Если я выполняю те же самые команды для одного элемента в массиве вручную, все работает должным образом, но я получаю Uncaught TypeError при использовании для l oop.
> var models = manager.getInstance().collection.models
undefined
> models.length
2378
> var attributes = models[0].attributes
undefined
> var resource = attributes.getResource()
undefined
> resource
//outputs object tree
> resource.idle.length
14
> models[0].attributes.getResource().idle.length
14
При итерации, однако, любой элемент resource.idle.length cra sh.
> var models = manager.getInstance().collection.models
undefined
> models.length
2378
> var data = new Array()
undefined
> for (n=0; n<models.length; n++;) {
var attributes = models[n].attributes
var resource = attributes.getResource()
if (resource.idle.length > 0) {
data.push(resource.idle)
}
}
Uncaught TypeError: Cannot read property 'length' of undefined
Это проблема с электронным приложением? Покопавшись в консоли и немного закодировав, кажется, что это огромный беспорядок. Иногда, когда я создаю var или просто запрашиваю консоль, он выводит undefined, но если я подожду se c и введу точно такую же команду в консоли, он не вернется undefined.
Я что-то тут напутал или это проблема асинхронности / многопоточности? for loop
работает слишком быстро, чтобы ссылки на объект были вовремя назначены для следующей команды? Если да, то каковы хорошие методы для этого?