草庐IT

javascript - RXJS - 仅在空闲时启动计时器?

我使用的流在我滚动窗口时会受到限制。在节流时(只要滚动),它会向控制台发出值。但是,当流空闲时(用户没有滚动窗口)——我想要一个计时器启动。但是——如果用户再次开始滚动——我不希望那个计时器发出值。目前我正在这样做:constobservable=Rx.Observable.fromEvent(window,'scroll');constsubscriber=observable.throttleTime(300).map(()=>'throttle').merge(Rx.Observable.interval(1000).map(()=>'tick')).subscribe((x)=

javascript - 为什么 RxJS 函数 toPromise 没有取消订阅

在我们的应用程序中,我们有很多地方用到:someObservable.take(1).subscribe(onSuccessHandler,onFailureHandler);但是对于订阅,您需要担心在某个时候取消订阅,这并不总是那么简单。我正在考虑将其简化并重写为:someObservable.toPromise().then(onSuccessHandler).catch(onFailureHandler);但是查看toPromise()(here)的实现,我似乎不明白为什么它不关心取消订阅。代码中的注释说不能取消,但我们如何让它像这样泄漏内存(以防我们确实如此)。编辑我想出了一个

javascript - 如何将自定义库事件(即 Google map 事件)转换为 RxJS 中的 Observable 流?

我想从Googlemap事件创建一个RxJS可观察流。我知道如何从native浏览器事件中执行此操作,如下所示:varresult=document.getElementById('result');varsource=Rx.Observable.fromEvent(document,'mousemove');varsubscription=source.subscribe(function(e){result.innerHTML=e.clientX+','+e.clientY;});mousemove是一个浏览器事件,这使我相信.fromEvent()将mousemove识别为硬编码

javascript - 错误 : Cannot find module "rxjs/operators" in Ionic Angular

我正在尝试运行我的Ionic项目。几天前它工作正常,现在我无法运行它,无论我做什么。这个错误出现了!我尝试从package.json和node_modules中删除Rxjs,还注释掉了我使用Rxjs的所有地方,仍然出现此错误。在Ubuntu16.04中尝试使用Node8.9.0和npm4.5.0。也试过同样的在windows中运行还是显示同样的错误!我该如何解决这个问题? 最佳答案 尝试重新安装5.5.3或更高版本的rxjsnpminstall@reactivex/rxjs@5.5.3这个问题似乎在5.5.3版本中得到修复https

javascript - RxJS Debounce 优先级

我在想出这个流时遇到了问题。我正在寻找类似debounceTime但具有优先级的东西。因此,如果我有形状为{type:'a',priority:2}的事件。这些事件需要几秒钟的时间去抖动,但不是发出最后一个事件,而是发出具有最高优先级的事件。inputstream:------(a|1)--(b|3)---(c|2)-----------------------(a|1)-----------------outputstream:-----------------------------------(b|3)---------------------(a|1)-----我尝试查看其他运

javascript - RxJS:如何使用 Observables 执行 "if"?

假设我有两个observable,如果另一个符合特定条件,我想监听一个observable的变化。我用zip尝试过,但似乎只有当bothobservables发生变化时,我才会收到通知,但如果条件另一个是正确的。我尝试过的:varfirstState=newRx.BehaviorSubject(undefined);varsecondState=newRx.BehaviorSubject(undefined);Rx.Observable.zip(firstState,secondState,function(first,second){return{first:first,second

javascript - 订阅/取消订阅 Rxjs Subject 时如何接收通知

我正在尝试使用Rxjs来管理大型状态树中的垃圾回收。我如何创建一个运算符来接受每次可观察对象的订阅者数量发生变化时触发的回调函数? 最佳答案 多种方式,都涉及隐藏您的主题并为消费者提供包装的可观察对象:想知道什么时候有人订阅了您的主题吗?constsubject=newSubject();constobservable=Observable.defer(()=>{someoneJustSubscribed();returnsubject;});returnobservable;想知道有人何时取消订阅?constsubject=new

javascript - rxjs 科目应该在类里面公开吗?

假设我有两个类,您可以在其中观察一些可观察值。第一个例子,带有公共(public)主题:classEventsPub{publicreadonlyonEnd=newSubject();}第二个例子,私有(private)主题和注册方法:classEventsPriv{privatereadonlyendEvent=newSubject();publiconEnd(cb:()=>void):Subscription{returnthis.endEvent.subscribe(cb);}}第一个示例在某种程度上是不安全的,因为任何人都可以从类外部调用eventsPub.endEvent.n

javascript - RxJS - 捕获并继续

我正在努力按照我预期的方式处理Rx的错误。当我有一个Observable(例如,来自点击流)并且发生异常时,我想捕获它但继续。我尝试过的所有解决方案都会捕获错误然后结束Observable。有没有办法捕获并继续下去?例如,下面的Observable将发出“1”,然后是“Error”,但永远不会发出“3”。varrange=Rx.Observable.range(1,3).map(function(i){if(i===2){throw"Error";}else{returni;}}).catch(function(e){returnRx.Observable.return(e)});ra

javascript - Angular 2 rxjs 嵌套 Observables

我希望创建一个返回Observable的函数但在返回之前必须完成另一个异步任务(一个Observable),以便将值传递给返回的Observable.@Injectable()exportclassMyComponent{GetAuthToken=function():Observable{returnthis._storageService.GetAsString('authToken');}GetData=function(authToken):Observable{letheaders=newHeaders();headers.append('authToken',authTok