在rxjs中,可以使用一些操作符来基于已有的Observable创建新的Observable订阅。以下是一些常用的操作符:
示例代码:
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
const source$ = new Observable<number>(subscriber => {
subscriber.next(1);
subscriber.next(2);
subscriber.next(3);
});
const mapped$ = source$.pipe(
map(value => value * 2)
);
mapped$.subscribe(value => console.log(value));
在上面的示例中,我们创建了一个源Observable source$
,它发出了数字1、2和3。然后,我们使用map
操作符创建了一个新的Observable mapped$
,它订阅了源Observable,并将每个值乘以2进行转换。最后,我们通过subscribe
方法订阅了新的Observable,并在控制台打印出转换后的值。
示例代码:
import { Observable } from 'rxjs';
import { filter } from 'rxjs/operators';
const source$ = new Observable<number>(subscriber => {
subscriber.next(1);
subscriber.next(2);
subscriber.next(3);
});
const filtered$ = source$.pipe(
filter(value => value % 2 === 0)
);
filtered$.subscribe(value => console.log(value));
在上面的示例中,我们创建了一个源Observable source$
,它发出了数字1、2和3。然后,我们使用filter
操作符创建了一个新的Observable filtered$
,它订阅了源Observable,并只保留满足条件(偶数)的值。最后,我们通过subscribe
方法订阅了新的Observable,并在控制台打印出满足条件的值。
示例代码:
import { Observable, merge } from 'rxjs';
const source1$ = new Observable<number>(subscriber => {
setTimeout(() => {
subscriber.next(1);
subscriber.complete();
}, 1000);
});
const source2$ = new Observable<number>(subscriber => {
setTimeout(() => {
subscriber.next(2);
subscriber.complete();
}, 2000);
});
const merged$ = merge(source1$, source2$);
merged$.subscribe(value => console.log(value));
在上面的示例中,我们创建了两个源Observable source1$
和source2$
,它们分别在1秒和2秒后发出值。然后,我们使用merge
操作符创建了一个新的Observable merged$
,它订阅了两个源Observable,并按照它们发出的顺序发出值。最后,我们通过subscribe
方法订阅了新的Observable,并在控制台打印出合并后的值。
这只是rxjs中一些常用的操作符示例,还有许多其他操作符可以用于创建新的Observable订阅。根据具体的需求,可以选择适合的操作符来创建所需的Observable。
领取专属 10元无门槛券
手把手带您无忧上云