当异步服务没有返回值但我想使用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处于错误状态。这只留下真实的'观察到的布尔值。
以下使用Observable<boolean>
是否适合这些情况?或者使用Observable<void>
Observable<void>
答案 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