我正在尝试将Rxjs
与一个可以执行一些I / O操作的小型Node程序一起使用。 Void操作(例如writeFile
)已作为Observables完成,没有任何发射值。它可以在大理石图中表示为:
writeFile (success) ---------|
writeFile (error) ---------X
我正在尝试执行以下操作:
removeDir -------|
writeFiles -------|
transformFiles -------|
要以正确的顺序完成这些操作,我的代码看起来像这样:
// helpers.ts
import { Observable } from '@reactivex/rxjs';
export function removeDir(dir: string): Observable<void> { ... }
export function writeFiles(fromDir: string, toDir: string): Observable<void> { ... }
export function transformFiles(dir: string): Observable<void> { ... }
// main.ts
import { Observable } from '@reactivex/rxjs';
import { removeDir, writeFiles, transformFiles } from './helpers';
const filesReady = removeDir('output')
.concat(Observable.defer(() => writeFiles('input', 'output')))
.concat(Observable.defer(() => transformFiles('output')));
filesReady.subscribe({
error(err) {
// Something went wrong!
}
complete() {
// Do something when files are ready
}
})
这个例子有点简化,但是我想在一起编写Observable的地方遇到问题。许多Rxjs
运算符仅适用于完整事件。
是否有更好的方法可以使用I / O事件撰写Rxjs
?
我发现围绕Rxjs
的一些概念令人困惑,所以非常感谢任何帮助。