Observable.on RxJs中的认购等价物

Observable.on RxJs中的认购等价物,rxjs,Rxjs,在RxJava中,当某个对象订阅了可观察对象时,有一个函数将调用您的操作 RxJs中是否有等效物 自从问了这个问题之后,他们似乎已经把这一页抄下来了。Google的缓存版本。这个函数很容易通过RxJs5现有函数的组合来实现 Rx.Observable.prototype.doOnSubscribe=函数(onSubscribe){ 返回Rx.Observable.empty() .do(null、null、onSubscribe) 康卡特先生(本); }; 从([1,2,3])可以观察到的R

在RxJava中,当某个对象订阅了可观察对象时,有一个函数将调用您的操作

RxJs中是否有等效物



自从问了这个问题之后,他们似乎已经把这一页抄下来了。Google的缓存版本。

这个函数很容易通过RxJs5现有函数的组合来实现

Rx.Observable.prototype.doOnSubscribe=函数(onSubscribe){
返回Rx.Observable.empty()
.do(null、null、onSubscribe)
康卡特先生(本);
};
从([1,2,3])可以观察到的Rx
.doOnSubscribe(()=>console.log('subscribed to stream'))
.subscribe(console.log,null,()=>console.log('completed'))

另一个基于Mark答案的示例是使用工厂功能:

Rx.Observable.prototype.doOnSubscribe=函数(onSubscribe){
const source=this;
返回接收可观察延迟(()=>{
onSubscribe();
返回源;
});
}

非常喜欢Mark的答案,但是如果您使用的是
rxjs
版本5或更高版本,我更喜欢使用纯函数,而不是修补原型

更新: 按照Ray的建议,使用
defer
,在没有
empty
concat
的情况下实施

从'rxjs/observable/defer'导入{defer};
从“rxjs/Observable”导入{Observable};
/**范例
从'rxjs/observable/from'导入{from};
from([1,2,3])
.pipe(doOnSubscribe(()=>console.log('subscribed to stream'))
.subscribe(x=>console.log(x),null,()=>console.log('completed');
*/
导出函数doOnSubscribe(onSubscribe:()=>void):(来源:Observable)=>Observable{
返回函数内部(来源:可观察):可观察{
返回延迟(()=>{
onSubscribe();
返回源;
});
};
}

原始答复:
从'rxjs/observable/empty'导入{empty};
从“rxjs/operators”导入{concat,tap};
从“rxjs/Observable”导入{Observable};
/**范例
从'rxjs/observable/from'导入{from};
from([1,2,3])
.pipe(doOnSubscribe(()=>console.log('subscribed to stream'))
.subscribe(x=>console.log(x),null,()=>console.log('completed');
*/
导出函数doOnSubscribe(回调:()=>void):(来源:Observable)=>Observable{
返回函数内部(来源:可观察):可观察{
返回空()管道(
点击(空、空、回调),
康卡特(来源)
);
};
}

我从未见过/需要它,快速搜索也没有找到任何东西,尽管我不确定——所以我将把它作为一条评论发布。我也搜索过,但什么也没找到。我只是觉得奇怪,它存在于RxJava中,而不是RxJs中。我把我的具体情况排除在外,因为我觉得这本身就是一个更强的问题。不幸的是,我认为我之所以需要类似的东西,是因为设计不好。它对于调试和日志记录非常有用