У меня есть следующая функция, моя цель - нажать на список элементов, когда компоненты могут идентифицировать их родительский элемент. Проблема, которая у меня есть, заключается в том, что когда я нажимаю на список console.log() показывает мне, что объект находится там, но когда я возвращаю список и перехватываю его в другой функции, в списке ничего нет. Я думаю, что список предметов возвращается до того, как код над ним будет выполнен.Обещания с angularJS и машинописным текстом
private get_items_for_request() {
return this.Item.forRequest(this.request.id, ['group'])
.then((_items) => {
var items = [];
for (var item of _items) {
return this.ItemComponent.forItem(item.id, ['type'])
.then((_components) => {
for (var component of _components) {
if (component.type.can_identify_item) {
items.push({
group_id: item.group.reference,
identifier_code: this.remove_check_digit_if_necessary(
component.identifier_code),
quantity: 1
});
break;
}
}
}, (reason) => {
this.Toast.error(
this.gettextCatalog.getString('components.load_failed'));
return [];
});
}
return items;
}, (reason) => {
this.Toast.error(
this.gettextCatalog.getString('items.failed_load'));
return [];
});
}
@GiftZwergrapper, если вы хотите получить рабочий код, вам необходимо связать пример plunkr или, по крайней мере, весь файл. Я не уверен, что вы ожидали, мы не медиумы. Если вы используете Angular 1, '' q q - ваша библиотека Promise. –
@GiftZwergrapper также, обратите внимание, что ошибка, о которой я указывал, все еще существует, вы немного агрессивны с downvotes здесь. –
В угловом режиме вы можете использовать '$ q.all' для той же цели – Icycool