Angular 将观察值数组转换为结果的可观察值
下面的代码正在运行。它的目的是将返回匹配项的搜索结果转换为每个匹配项的详细信息 也许有一种更好的方法来写这篇文章:Angular 将观察值数组转换为结果的可观察值,angular,typescript,rxjs,Angular,Typescript,Rxjs,下面的代码正在运行。它的目的是将返回匹配项的搜索结果转换为每个匹配项的详细信息 也许有一种更好的方法来写这篇文章: fromEvent(this.searchInput.nativeElement, 'input').pipe( debounceTime(500), ).subscribe(async _ => { const results = await this.database.search(this.searchText); c
fromEvent(this.searchInput.nativeElement, 'input').pipe(
debounceTime(500),
).subscribe(async _ => {
const results = await this.database.search(this.searchText);
const arrayOfobservables = combineLatest(results.map(result => this.database.getDetails(result.objectID)));
this.searchResults$.next(arrayOfobservables)
});
this.details$ = this.searchResults$.pipe(
switchMap(val => val)
)
我正在努力的部分是将可观察的数组转换成我可以在UI中显示的可观察数组
尤其是
switchMap(val=>val)
在我看来非常奇怪。关于如何使此代码更干净,您有什么想法吗?您应该能够切换到承诺:
尝试:
这段视频也可能有帮助。它涵盖了高阶观测值的用途和使用,如开关图:
this.details$ = fromEvent(this.searchInput.nativeElement, 'input').pipe(
debounceTime(500),
switchMap(_ => this.database.search(this.searchText)),
switchMap(results => combineLatest(results.map(result => this.database.getDetails(result.objectID)))),
tap(_ => { console.log(_) }), // see what you get here, it should hopefully be an array
);