Observable<void> 运算符的 RxJs
RxJs of operator for Observable<void>
我有一个 returns Observable<void>
的函数,我需要它 return 一个立即发出并完成的可观察对象。通常我会使用 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
:
return of<void>(undefined);
或者如果你不会,做 IIFE,像这样:
return of(((): void => {})());
你也可以return EMPTY
:
import { EMPTY, Observable } from "rxjs";
function test(): Observable<void> {
return EMPTY
}
test().subscribe(e => console.log("sub"))
简短:of(null)
or of(undefined)
。
你可以return of(void 0)
.
我有一个 returns Observable<void>
的函数,我需要它 return 一个立即发出并完成的可观察对象。通常我会使用 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
:
return of<void>(undefined);
或者如果你不会,做 IIFE,像这样:
return of(((): void => {})());
你也可以return EMPTY
:
import { EMPTY, Observable } from "rxjs";
function test(): Observable<void> {
return EMPTY
}
test().subscribe(e => console.log("sub"))
简短:of(null)
or of(undefined)
。
你可以return of(void 0)
.