【发布时间】:2020-09-26 16:54:56
【问题描述】:
我正在尝试了解 fork 如何加入 rxjs 运算符的行为,并进行了一些测试。我发现在 fork Join 发出第一个值之后,它的取消订阅或完成(不确定)并且不能产生任何值。这是对的吗 ? My code here"rxjs "forkjoin" 例子"
来自随附的代码。只有在单击两个按钮后 forkJoin 才能按预期发出来自 observable 1 和 observable 2 的值。但我第二次做了这个测试。单击按钮 1、2,没有任何反应。这种行为没有记录在案,我不确定我是否做错了什么。有人可以给我澄清一下吗?谢谢
import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject, combineLatest, forkJoin, from, fromEvent,
interval, Observable, of, zip } from 'rxjs';
import { delay, map, take } from 'rxjs/operators';
@Component({
selector: 'my-app',
template: `
RXJS EXAMPLE. See Console
<button (click)="test1()"> click 1</button>
<button (click)="test2()"> click 2</button>
<div *ngIf="data">
{{data}}
</div>
`,
})
export class AppComponent {
private source1 = new BehaviorSubject<number>(1);
obs1$ = this.source1.asObservable();
private source2 = new BehaviorSubject<number>(1);
obs2$ = this.source2.asObservable();
test1(){
var randomVal = Math.floor(Math.random() * 10)*2;
this.source1.next(randomVal);
this.source1.complete();
}
test2(){
var randomVal = Math.floor(Math.random() * 10);
this.source2.next(randomVal);
this.source2.complete();
}
constructor() {
forkJoin([ this.obs1$, this.obs2$])
.subscribe(res => {
this.data = res; });
}}
【问题讨论】:
标签: javascript angular rxjs