可<void>观察运算符的 RxJs



我有一个返回Observable<void>的函数,我需要它返回一个立即发出并完成的可观察对象。通常我会使用of操作符来执行此操作,但它不适用于void

我试过但不奏效的事:

return of(); // doesn't emit
return of({}); // TypeScript compilation error 'Type 'Observable<{}>' is not assignable to type 'Observable<void>'.'

我试过的方法都有效,但我不喜欢:

return of({}).map(() => {}); // does extra work just to avoid compiler error
return of({}) as unknown as Observable<void>; // yucky casting
return new Observable<void>(s => {s.next(); s.complete();}); // verbose

我目前使用的是最后一个,因为它不需要做额外的工作,但我更喜欢像of这样的快捷方式。

简短明了:of(null)of(undefined).

可以返回of(void 0)

实时演示:https://stackblitz.com/edit/rxjs-yn6dmr

您可以为操作符of设置泛型类型:

return of<void>(undefined);

如果你不愿意,也可以这样写:

return of(((): void => {})());

也可以返回EMPTY:

import { EMPTY, Observable } from "rxjs";
function test(): Observable<void> {
return EMPTY
}
test().subscribe(e => console.log("sub"))

最新更新