這是我的翻譯功能,我需要回傳陣列。可以從Subscribe-回傳嗎?
translator(items) {
const output = items?.map((item) => {
return this.translate.get(item.label).subscribe((value) => {
item = { ...item, label: value };
return item;
});
});
console.log('output', output);//no data
}
uj5u.com熱心網友回復:
據我了解,您想要執行以下操作:
- 豐富
items陣列中的每個專案 - 將其轉換為承諾
- 等待這個承諾
- 列印這個承諾的輸出
您可以使用以下代碼來實作此目的:
async translator(items) {
const output = await lastValueFrom(
forkJoin(
items?.map((item) =>
this.translate
.get(item.label)
.pipe(map((value) => ({ ...item, label: value })))
)
)
);
console.log('output', output); //no data
}
解釋:
lastValueFrom用于將可觀察流轉換為承諾(并回傳最后一個值)forkJoin用于訂閱多個可觀察物件并在每個物件完成后發出結果陣列map用于“豐富”初始專案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/529709.html
下一篇:BehaviorSubject、異步管道和*ngIf組合的奇怪行為:ngOnChanges接收到理論上不可能的更改
