Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可观察<;无效>;Typescript中的使用模式_Typescript_Design Patterns_Rxjs_Observable_Void - Fatal编程技术网

可观察<;无效>;Typescript中的使用模式

可观察<;无效>;Typescript中的使用模式,typescript,design-patterns,rxjs,observable,void,Typescript,Design Patterns,Rxjs,Observable,Void,当一个异步服务没有返回值,但我想使用observeable时,我倾向于使用observeable。但是我对这个布尔值没有任何意义,因为服务要么失败,要么成功,如果失败,我希望可观察对象处于错误状态。这只为观察到的布尔值留下“true”值 以下使用可观察到的对于这些情况是一种好的模式吗?或者使用Observable const asyncFuncWithoutResult=():可观察=>{ //伪造没有返回值的异步对象 const itWorked=true;//是否 如果(成功了){ 可观测的

当一个异步服务没有返回值,但我想使用observeable时,我倾向于使用
observeable
。但是我对这个布尔值没有任何意义,因为服务要么失败,要么成功,如果失败,我希望可观察对象处于错误状态。这只为观察到的布尔值留下“true”值

以下使用
可观察到的
对于这些情况是一种好的模式吗?或者使用
Observable

const asyncFuncWithoutResult=():可观察=>{
//伪造没有返回值的异步对象
const itWorked=true;//是否
如果(成功了){
可观测的返回值of();
}否则{
return Observable.throw(错误('It not work'));
}
}
//呼叫服务
asyncFuncWithoutResult()
.订阅(
未定义,//使用Observable.of()时不会发出任何信息
(err:any)=>console.error(err),//处理错误状态
()=>console.log('Success'),//处理成功状态
);

更准确地说,当您使用泛型类型
void
定义主题时,有两种方法可以调用它的
next()
方法,并且没有任何参数:

const subject = new Subject<void>();
subject.next();
实际上,
next
value
参数是可选的,因此如果您不指定它,它将发送
未定义的
,这意味着即使您有
主题
,您仍然会收到
next
通知

asyncFuncWithoutResult().subscribe(alawaysUndefined => {
  /* ... */
});
还请注意,您可以通过
map
mapTo
将任何可观察对象转换为
(当您想要合并多个可观察对象时,这是必要的):

source.mapTo(void 0)
   ...

我看不出有什么明显的问题。如果遇到需要发出任意值的情况,可以始终使用
concat
Observable.of
发出所需的任何值。例如,
asyncFuncWithoutResult().concat(Observable.of(“success!”)
.Thx,这是一个非常有用的提示。感谢您提供的额外见解,非常有用。If subject.next();结果发出一个“未定义的”信号,与此Observable.of()类似的函数不返回发出一个“未定义的”信号的Observable,这有意义吗?我认为这是两个不同的东西。拥有一个不发出任何
next
且只发送
complete
通知的Observable.of()
通知(或
Observable.empty
通知)的Observable是完全可以的。另一方面,让
subject.next()
什么都不做是没有意义的,因为当您知道这个方法不会做任何事情时,调用它有什么意义?出于同样的原因,没有不发出任何
next
complete
error
通知的可观察对象,因为为什么有人想使用它们。
asyncFuncWithoutResult().subscribe(alawaysUndefined => {
  /* ... */
});
source.mapTo(void 0)
   ...