gpt4 book ai didi

typescript - Typescript 中的 Observable 使用模式

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:08 24 4
gpt4 key购买 nike

当异步服务没有返回值但我想使用 Observables 时我倾向于使用 Observable<boolean> .但是我对这个 bool 值没有意义,因为服务要么失败要么成功,如果失败我希望 Observable 处于错误状态。这只为观察到的 bool 值留下“真”值。

下面是用Observable<void>这些情况的好模式?或者使用 Observable<void> 是否存在可预见的问题?

const asyncFuncWithoutResult = (): Observable<void> => {
// fake something async that has no return value

const itWorked = true; // or not
if (itWorked) {
return Observable.of();
} else {
return Observable.throw(Error('It did not work'));
}
}

// call the service
asyncFuncWithoutResult()
.subscribe(
undefined, // nothing will be emitted when using Observable.of()
(err: any) => console.error(err), // handle error state
() => console.log('Success'), // handle success state
);

最佳答案

更准确地说,当您定义一个具有通用类型的 Subject 时 void您可以通过两种方式调用它的 next()方法并且没有任何参数:

const subject = new Subject<void>();
subject.next();

...或使用 void 0 :

subject.next(void 0);

事实上,value next 的参数是可选的,所以如果你不指定它,它会发送 undefined这意味着即使你有 Subject<void> 您仍然会收到 next通知:

asyncFuncWithoutResult().subscribe(alawaysUndefined => {
/* ... */
});

另请注意,您可以将任何 Observable 转换为 <void> (当你想合并多个 Observables 时这是必要的)map :

source.pipe(map(() => void 0))
...

关于typescript - Typescript 中的 Observable<void> 使用模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46378457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com