草庐IT

javascript - RxJS 5.0 "do while"类机制

我正在尝试使用RxJS进行简单的简短投票。它需要每delay秒向服务器上的位置path发出一次请求,一旦达到两个条件之一就结束:回调isComplete(data)返回true或尝试服务器的次数超过maxTries。这是基本代码:newShortPoll(path,maxTries,delay,isComplete){returnObservable.interval(delay).take(maxTries).flatMap((tryNumber)=>http.get(path)).doWhile((data)=>!isComplete(data));}但是,doWhile在RxJS

javascript - 如何在 RxJS5 中应用定时背压?

假设我有以下代码:leta=Rx.Observable.of(1,2,3)letb=Observable.zip(a,a,(a,b)=>a+b)b.forEach(t=>console.log(t))这会立即输出结果。现在,我如何在每条消息之间设置一个定时延迟作为背压方式(请注意,我不需要缓冲区;相反,我想要a和b成为ColdObservables),例如:b.takeEvery(1000).forEach(t=>console.log(t))并得到完全相同的答案:246替代方案:如果RxJS不支持背压(某些可观察对象的拉动机制),那么如何在不耗尽资源的情况下创建无限生成器?备选方案2

javascript - RxJS:可观察对象和单个观察者的递归列表

我在处理可观察量的递归链时遇到了一些麻烦。我正在使用RxJS,它目前的版本是1.0.10621,包含最基本的Rx功能,以及用于jQuery的Rx。让我为我的问题介绍一个示例场景:我正在轮询TwittersearchAPI(JSON响应)用于包含特定关键字的推文/更新。响应还包括一个“refresh_url”,应该使用它来生成后续请求。对该后续请​​求的响应将再次包含一个新的refresh_url等。Rx.jQuery允许我让Twitter搜索API调用一个可观察的事件,它产生一个onNext然后完成。到目前为止我尝试的是让onNext处理程序记住refresh_url并在onCompl

javascript - RXJS : moving from of() to scheduled()

我使用of()运算符来创建具有简单值的可观察对象,例如of(navigator.onLine)但我不得不更新RxJS版本,我得到了这个linter警告ofisdeprecated,改用scheduled。这显然不是完全相同的功能,我不应该设置调度程序。你会如何对待它?感谢任何帮助。谢谢。 最佳答案 这个是是一个rxjsbug,它是stillopenclosed。检查here了解更多信息您可以监控此问题并同时使用://tslint:disable-next-line:deprecationof(navigator.onLine);

javascript - 在 RxJS 中排序数组

RxJava有一个方法toSortedList(Comparatorcomparator)将对象流转换为由Comparator排序的对象列表。我如何在JavaScript中使用RxJS实现相同的目的,并获得一个带有对象流的Observable以发出排序的数组/列表? 最佳答案 您可以使用以下代码:Rx.Observable.of(5,8,7,9,1,0,6,6,5).toArray().map(arr=>arr.sort()).subscribe(x=>console.log(x)) 关

javascript - 如何捕获请求错误,然后打开模态,然后在模态关闭时使用 RxJS 重试

我想调用一个可以使用Angular2的HTTP类返回授权失败(401)的服务器。请求的流程应该是这样的:用户使用myService.getSomething().subscribe()向服务器发出请求如果服务器返回401:打开一个模态窗口,询问用户的凭据。用户成功登录回应用模态框关闭并执行回调回调应该重试初始请求(myService.getSomething().subscribe())这是我目前拥有的:exportclassMyService{//...publicgetSomething():Observable{returnthis.http.get(url,options).c

javascript - RxJS 捕获 **并** 重试 Observable

我的用例是将Observable映射到成功和失败的redux操作。我进行网络调用(具有提供promise的功能),如果成功,我必须转发成功操作,如果失败则不是错误操作。Observable本身将继续运行。对于我所能搜索到的所有内容,RxJS没有一种机制可以捕获错误并重试原始错误。我的代码中有以下我不满意的解决方案:error$=newRx.Subject();searchResultAction$=search$.flatMap(getSearchResultsPromise).map((resuls)=>{return{type:'SUCCESS_ACTION',payload:{r

javascript - RxJS 订阅者取消订阅与完成

我正在通读RxJS文档并想确保我理解Subscriber.unsubscribe()之间的区别。和Subscriber.complete().假设我有一个包含两个订阅者的可观察对象,subscriber1和subscriber2。如果subscriber1在其订阅上调用取消订阅,它将不再收到来自observable的通知,但subscriber2将继续接收它们。.complete()的文档:TheObservercallbacktoreceiveavaluelessnotificationoftypecompletefromtheObservable.NotifiestheObserv

javascript - 如何使用 RxJs 异步加载图像并在所有加载后执行方法

我正在尝试将基于promise的代码转换为RxJs,但我很难理解Rx,尤其是RxJs。我有一个包含路径的数组。varpaths=["imagePath1","imagePath2"];我喜欢用Javascript加载图片varimg=newImage();img.src=imagePath;image.onload//当所有图像都加载完毕后,我想执行一个方法。我知道有Rx.Observable.fromArray(imagepathes)还有类似的东西Rx.Observable.fromCallback(...)还有类似flatMapLatest(...)和Rx.Observable.

javascript - 使用 RxJS 一次限制请求数

假设我有10个url,我想为每个url发出一个HTTP请求。我可以创建一个URL的可观察对象,然后是.flatMap()对每个URL的请求,然后是.subscribe以获取结果。但这会同时发出所有请求。有没有办法将请求的数量限制为固定数量,以免服务器重载 最佳答案 RxJSv6更新将您的并行限制作为第二个参数通过mergeMap进行管道传输constMAX_PARALLEL_QUERIES=3;letallResults=[];letobservables=[]//fillwithobservablesfrom(observable