我正在试图找出正确的'使用Rx.Observable.create
在我自定义创建的Observable上实现dispose处理程序的方法返回命名的dispose函数:
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return function dispose() {
console.log('diposed');
};
});
匿名函数返回:
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return () => {
console.log('disposed');
};
});
明确Disposable.create返回:
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return Rx.Disposable.create(() => {
console.log('disposed');
});
});
它们似乎完全相同,但文档并不是很清楚什么是首选方式。
答案 0 :(得分:2)
这将归结为您对自己想做的事情的偏好。虽然我认为这三种用途实际上是undefined
,function
,Disposable
。命名函数和匿名lambda之间的选择更像是JavaScript的区别而不是Rx,所以我鼓励你阅读差异(语义this
,callstack可读性等等。)。
从可用性的角度来看,它并不重要,因为框架将在either a Disposable.empty
or Disposable.create
respectively中包含false-y值和函数。
(箭头)函数方法的一个优点是,如果您在某些时候升级到RxJS5,其中Disposable
- > Subscription
你可以避免在明确调用该类型(或进行某种全局别名)时进行一大堆重构,因为新版本会执行相同类型的转换魔法。
选择取决于你。