Rxjs Rx.Observable.create中返回的一次性签名差异
我正试图找出在自定义创建的Observable上使用dispose处理程序的“正确”实现方式 返回的命名dispose函数:Rxjs Rx.Observable.create中返回的一次性签名差异,rxjs,Rxjs,我正试图找出在自定义创建的Observable上使用dispose处理程序的“正确”实现方式 返回的命名dispose函数: Rx.Observable.create(obs => { //emit values obs.onComplete(); return function dispose() { console.log('diposed'); }; }); Rx.Observable.create(obs => { //emit values
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');
};
});
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return Rx.Disposable.create(() => {
console.log('disposed');
});
});
匿名函数返回:
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');
};
});
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return Rx.Disposable.create(() => {
console.log('disposed');
});
});
显式返回:
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');
};
});
Rx.Observable.create(obs => {
//emit values
obs.onComplete();
return Rx.Disposable.create(() => {
console.log('disposed');
});
});
它们的工作原理似乎完全相同,但文档中并没有明确说明什么是首选方式。问题将归结为您对自己想做的事情的偏好。虽然我认为这三种用法实际上是,
未定义的
,函数
,一次性的
。命名函数和匿名lambda之间的选择更多的是JavaScript的区别,而不是Rx的区别,因此我鼓励您仔细阅读这些区别(语义这,调用堆栈可读性等等)
从可用性的角度来看,这其实并不重要,因为框架会将false-y值和函数封装在其中
(箭头)函数方法的一个优点是,如果您在某个时候升级到RxJS5,其中一次性->订阅,您可以避免在显式调用该类型(或进行某种全局别名)的地方进行一系列重构,因为新版本也有同样的转换魔法
选择权在你