在Typescript中可观察的<void>使用模式

时间:2017-09-23 10:14:04

标签: typescript design-patterns rxjs observable void

当异步服务没有返回值但我想使用Observable时,我倾向于使用namespace App\Model\Table; use Cake\ORM\Query; use Cake\ORM\RulesChecker; use Cake\ORM\Table; use Cake\Validation\Validator; use Cake\ORM\TableRegistry; class ProgramsTable extends Table { public function beforeSave($event, $entity) { $entity->slug = $entity->title; } } 。但是我对这个布尔值没有意义,因为服务失败或成功,如果失败,我希望Observable处于错误状态。这只留下真实的&#39;观察到的布尔值。

以下使用Observable<boolean>是否适合这些情况?或者使用Observable<void>

是否存在可预见的问题
Observable<void>

1 个答案:

答案 0 :(得分:8)

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

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

...或void 0

subject.next(void 0);

事实上,value的{​​{1}}参数是可选的,因此如果您不指定它,则会发送next,这意味着即使您有undefined 您仍会收到Subject<void>次通知

next

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

mapTo