Глядя на подпись mergeMap mergeMap(project: function: Observable, resultSelector: function: any, concurrent: number): Observable
, вы можете использовать аргумент resultSelector
:
from([
'https://jsonplaceholder.typicode.com/posts',
'https://jsonplaceholder.typicode.com/comments',
'https://jsonplaceholder.typicode.com/albums',
])
.pipe(
mergeMap(url =>
this.getData(url),
(outerValue, innerValue) => ({ url: outerValue, posts: innerValue })),
tap(({ posts, url })=> {
console.log(posts);
console.log(url);
})
).subscribe();
Это эффективно отобразит как url
, так и результат this.getData(url)
для объекта, который можно использовать в tap()
.
Вот ваш пример , измененный, чтобы показать это в действии.
ПРИМЕЧАНИЕ: селекторы результатов находятся в процессе устаревания / удаления .Хотя это решение в настоящее время может работать, оно больше не будет жизнеспособным в будущей версии RxJS (7.x).Ответ @martin определенно более «ориентирован на будущее».
Надеюсь, это поможет!