enn*_*e87 2 javascript rxjs angular
我知道如何组合可观察量并在所有可观察量发出至少一个值(combineLatest、forkJoin 等)时获取结果。
但是,当许多可观察量之一发出值时,如何发出值呢?
例如:
const adModelChangedObs$ = this.editAdService.adModelChanged; // Angular subject one
const refreshPreviewClickedObs$ = this.editAdService.refreshPreviewClick // Angular subject two
merge([adModelChangedObs$, refrshPreviewClickedObs$]).subscribe(() => {
console.log('One of the two observables emitted a value');
});
Run Code Online (Sandbox Code Playgroud)
订阅处理程序没有被执行,尽管我已经尝试了许多 RxJS 操作符。
正如评论中提到的,合并函数应该对您的情况有所帮助,但是,您必须将可观察量作为参数传递,而不是作为数组传递。
您可以像下面这样尝试一下:
// import { merge } from 'rxjs';
const adModelChangedObs$ = this.editAdService.adModelChanged; // Angular subject one
const refreshPreviewClickedObs$ = this.editAdService.refreshPreviewClick; // Angular subject two
merge(adModelChangedObs$, refrshPreviewClickedObs$).subscribe(() => {
console.log('One of the two observables emitted a value');
});
Run Code Online (Sandbox Code Playgroud)
但是,如果这不起作用,那么您需要确保您的editAdService可观察量正确地发出值。