Проблему можно решить с помощью
async/await.
Вариант 1:async handleSomething(data) {
const items = [];
for(let i = 0; i < data.length; i++) {
const item = { source: data[i] };
if (item.someCheck()) {
const things = await fetch('/api/things?type=1');
item.type = 'type-1';
this.$set(item, 'things', things);
} else {
item.type = 'type-2';
}
items.push(item);
}
this.$emit('get', items);
}
Вариант 2:async handleSomething(data) {
const items = await Promise.all(data.map(async elem => {
const item = { source: elem };
if (item.someCheck()) {
const things = await fetch('/api/things?type=1');
item.type = 'type-1';
this.$set(item, 'things', things);
} else {
item.type = 'type-2';
}
return item;
});
this.$emit('get', items);
}