У меня есть этот сценарий в машинописи / угловой с rxjs 6.5:
main(){
const properties = ['session', 'user'];
const source: Observable<any> = from(properties);
source
.pipe(
mergeMap(key => this.getKey().map((value) => ({key: key, value: value}))),
tap((result) => {
// sending the result elsewhere;
}),
).subscribe(
(result) => {
console.log('Final result ->', result);
}
);
console.log('\n');
}
getKey(): Observable<any> {
// Mock function that returns an observable that emits 1 value
const observable = from(['test']);
return observable;
}
Вывод:
Final result -> {key: "session", value: "test"}
Final result -> {key: "user", value: "test"}
1-й вопрос:
Как мне вернуть самым элегантным образом при подписке на источник только 1 значение с объединенными результатами внутренних наблюдаемых?
Мой требуемый вывод с подпиской таким образом (потому что я хочу, чтобы эта комбинированная операция была в конвейере), будет:
(...).subscribe(
(result) => {console.log('Final Result:', result}
)
OUTPUT:
Final result -> [{key: "session", value: "test"}, {key: "user", value: "test"}]
2-й вопрос
Если меня не волнует результат внутренних наблюдаемых, как мне вернуть только 1 значение или как узнать, когда все внутренние наблюдаемые были завершены?
Заранее спасибо.