это моя функция перевода, мне нужно вернуть массив. Можно ли вернуться из Subscribe
- ?
translator(items) {
const output = items?.map((item) => {
return this.translate.get(item.label).subscribe((value) => {
item = { ...item, label: value };
return item;
});
});
console.info('output', output);//no data
}
Насколько я понимаю, вы хотите сделать следующее:
items
Вы можете использовать следующий код для достижения этого:
async translator(items) {
const output = await lastValueFrom(
forkJoin(
items?.map((item) =>
this.translate
.get(item.label)
.pipe(map((value) => ({ ...item, label: value })))
)
)
);
console.info('output', output); //no data
}
Объяснение:
lastValueFrom
используется для преобразования наблюдаемого потока в обещание (и возврата последнего значения)forkJoin
используется для подписки на несколько наблюдаемых и выдачи массива результатов после завершения каждого из них.map
используется для «обогащения» исходных предметов