面试题答案
一键面试- 关键代码:
import { Component } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { combineLatest, map } from 'rxjs'; @Component({ selector: 'app - my - component', templateUrl: './my - component.html' }) export class MyComponent { userInfo: any; orderList: any; constructor(private http: HttpClient) { const userInfo$ = this.http.get('/api/userInfo'); const orderList$ = this.http.get('/api/orderList'); combineLatest([userInfo$, orderList$]) .pipe( map(([user, orders]) => { this.userInfo = user; this.orderList = orders; return { user, orders }; }) ) .subscribe(result => { // 这里可以对合并后的结果进行进一步处理,比如传递给视图 console.log(result); }); } }
- RxJS操作符作用解释:
combineLatest
:- 作用:当传入的所有Observable(这里是
userInfo$
和orderList$
)都至少发出一个值时,它会将这些Observable最近发出的值组合成一个数组,并将这个数组作为新的值发出。这使得我们可以在两个HTTP请求都完成后,获取到它们的结果并进行下一步处理。这里实现了两个请求的并发处理,并等待两个请求都完成。
- 作用:当传入的所有Observable(这里是
map
:- 作用:对
combineLatest
发出的数组进行转换。在这个例子中,将数组解构为user
和orders
,分别赋值给组件的userInfo
和orderList
属性,然后返回一个包含user
和orders
的对象。这个操作符用于对Observable发出的值进行转换和处理,使其符合我们后续使用的格式。
- 作用:对