草庐IT

rxjs-test-scheduler

全部标签

javascript - 如何使用 rxjs 5 观察对象变化

我想监视一个对象,这样所有的订阅者都会被通知它的任何变化。我已经看到了askedbefore,然而答案无关紧要,因为RXjs版本5不再在其API中包含ofObjectChanges。我看过一些“技巧”,比如创建一个返回函数的观察者:letmyObservable=newObservable((observer)=>{return(data)=>{observer.next(data)}})//...myObservable.subscribe()('someData')不过,我确信有更优雅的方式来做到这一点。有什么想法吗? 最佳答案

javascript - Jest : cannot find module required inside module to be tested (relative path)

我有这个组件:importReactfrom'react';importVideoTagfrom'./VideoTag';importJWPlayerfrom'./JWPlayer';classVideoWrapperextendsReact.Component{//...componentcode}基于某些逻辑在内部呈现另一个组件(VideoTag或JWPlayer)但是当我尝试在一个Jest文件中测试它时我得到错误:找不到模块'./VideoTag'这三个组件在同一个目录中,这就是为什么当我转译它并在浏览器中看到它在运行时它实际上有效但看起来Jest在解析这些相对路径时遇到问题,这

javascript - 为什么 Rxjs publishReplay(1).refCount() 不重播?

为什么publishReplay(1).refCount()不为迟到的订阅者重播最后一个值?a=newRx.Subject();b=a.publishReplay(1).refCount();a.subscribe(function(x){console.log('timelysubscriber:',x)});a.next(1);b.subscribe(function(x){console.log('latesubscriber:',x)});预期输出:timelysubscribe:1latesubscriber:1实际输出timelysubscriber:1

javascript - RxJs 将流拆分为多个流

如何根据分组方法将一个永无止境的流拆分为多个结束流?--a--a-a-a-a-b---b-b--b-c-c---c-c-d-d-d-e...>进入这些观察--a--a-a-a-a-|b---b-b--b-|c-c---c-c-|d-d-d-|e...>如你所见,a在开头,我收到b后,就不再收到a了,所以应该结束。这就是为什么普通的groupBy不好。 最佳答案 您可以使用window和share源Observable。bufferCount(2,1)还有一个小技巧:conststr='a-a-a-a-a-b-b-b-b-c-c-c-

javascript - RxJS forkJoin 会按顺序返回结果吗?

RxJS提供了一个名为forkJoin的函数。它允许您输入多个Observables并等待它们全部完成。我想知道生成的数组是否会按照与输入可观察对象的顺序相同的顺序包含结果。如果不会,哪一个运算符(operator)会保持相同的顺序?我一直在调查docs并且无法找到答案。 最佳答案 它将以相同的顺序返回结果。如theseofficialdocs中所述.值得一提的是,它只会发出流的最新值:varsource=Rx.Observable.forkJoin(Rx.Observable.of(1,2,3),Rx.Observable.of(

javascript - 用于分页的 RXJS while 循环

我尝试查询swapapi中的所有人数据.URLswapi.co/api/people返回一个对象,其中包含一个人数组和我从中获取下一个数据的URL(swapi.co/api/people/?page=2)。我想要做的是,每次有新页面可用时,订阅方法都会更新Angular组件。我是响应式(Reactive)编程模型的新手。如何实现while循环或一系列Observable?这适用于第一页:getAllPeople():Observable{letnextUrl=http://swapi.co/api;letsource=Observable.create(observer=>{this.

javascript - RxJS Interval 无延迟

以下代码在5000ms之后发出一个int,然后每隔5000ms发出另一个:letevens=Observable.interval(5000).map(i=>{returni*2;});evens.subscribe((i)=>{console.log(i);});是否可以这样做,但立即获得第一个结果(0ms),然后在后续结果之间等待5000ms? 最佳答案 您可以使用timer()其中第一个参数是初始延迟:timer(0,5000);或者,如果您希望第一个项目立即发出,您也可以使用startWith()运营商。2019年1月:针对

javascript - Vue-test-utils:在单个测试中多次使用 $nextTick

我正在为vuelidate编写单元测试在我的组件中进行验证。我发现$touch()方法是异步调用的,所以我需要为expect()使用$nextTick()。当我需要两个nextTick()s用于两个expect()s时,问题就出现了。describe('Validations',()=>{letdataletmyComponentbeforeEach(()=>{data=()=>{propertyABC='notallowedvalue'}myComponent=localVue.component('dummy',{template:'',validations,data})it('

javascript - RxJS publishReplay 与 publishLast

我正在Angular应用程序中实现缓存HTTP结果。据我所知,以下两个代码都有效,但我需要知道它们是否在做完全相同的事情,还是我遗漏了一些重要的东西?最后发布getPosts(){if(!this.posts$){this.posts$=this.http.get('api').publishLast().refCount();returnthis.posts$;}returnthis.posts$;}发布重播getPosts(){if(!this.posts$){this.posts$=this.http.get('api').publishReplay(1).refCount();

javascript - RxJS combineLatest 无需等待源可观察量发出?

我有两个源可观察对象,我需要在一个源可观察对象发出后立即计算一些数据。我正在尝试使用combineAll()运算符,但它仅在每个源可观察对象首次发出时发出一个值。是否有任何类似于combineAll()的运算符在任何源可观察对象首次发出时立即发出?如果不是,最明确的方法是什么?我尝试过的:constsource1$=service.getSomeData();constsource2$=service.getOtherData();combineLatest(source1$,source2$).pipe(map([source1Data,source2Data]=>{//thisco