草庐IT

javascript - RxJS Observable 返回数组,每次数组迭代运行另一个函数

我有一个函数getNews(),它基本上返回angular的http.get请求。请求的结果是Id的数组。我想遍历我得到的这个数组并运行另一个http.get请求(函数getItem(id)),然后它将返回从服务器接收的单个Id的对象。我试过这样使用它:getLatest(){returnthis.http.get('all_news_url').map(res=>res.json())//IeventriedcreatingObservablefromarrayandgetonly5elements//.map(res=>Observable.from(res.json()))//.

javascript - 如何使用 RxJS 显示一个 "user is typing"指标?

我知道一点BaconJS,但现在我正尝试通过创建“用户正在输入...”指示器来学习RxJS。这很简单,可以用两个简单的规则来解释:当用户输入时,指示符应该立即可见。当用户停止打字时,指示器应在用户最后一次打字后1秒内仍然可见。我不确定这是否正确,但到目前为止我已经创建了两个流:每秒发出一个0的心跳流。用于捕获用户键入事件并为每个事件发出1的流。然后我将它们合并在一起,然后简单地利用结果。如果它是1,那么我会显示指示器。如果它是0,那么我会隐藏指示器。这是它的样子:constshowTyping=()=>$('.typing').text('Useristyping...');const

javascript - 如何重复 ajax 请求,直到满足 RxJS Observable 的条件?

我正在尝试重复请求,直到响应包含使用RxJS的数据,此时我想调用成功(或失败)处理程序,但我在使用RxJS时遇到了麻烦。这是我目前的做法://...redux-observableactionobservable.mergeMap(()=>fetchData().repeatWhen(response=>response.takeWhile(({data})=>!data.length).of(response))).map(successFunction).catch(failureFunction);免责声明:我对RxJS很陌生.... 最佳答案

javascript - rxjs 在 map Rx.Observable.range(1, 5).map 中使用 async/await

我想使用async/await从rxjs获取列表。我该怎么办?functiongetData(num){returnnewPromise((resolve,reject)=>{resolve(num+1)})}asyncfunctioncreate(){varlist=awaitRx.Observable.range(1,5).map(async(num)=>{constdata=awaitgetData(num)returndata}).toArray().toPromise()returnlist}Rx.Observable.fromPromise(create()).subscr

javascript - RxJS,Observable,如何保存值并将映射切换到另一个

//ticker$willupdateevery3s//showHand$willonlytrigerafteruserclickbutton//IwouldliketotakelasttickerpriceasuserorderpricewhenuserclickbuttonletlastPrice:number;this.ticker$//WhatIamdoingnowispreservevaluetovairablehere..do(ticker=>lastPrice=ticker.closePrice).switchMap(()=>this.showHand$).subscri

javascript - 在 Angular 中使用 shareReplay(1) - 仍然调用 http 请求?

我创建了一个演示(ng-run),其中有一个调用Http请求的按钮。单击按钮时,我调用此方法:publicgetData(){this._jokeService.getData().subscribe();}依次调用这个(从服务):publicgetData(){returnthis.http.get(API_ENDPOINT).pipe(shareReplay(1))}问题是每次点击-我仍然看到发起了一个新的http请求:问题:为什么shareReplay不保留响应的最后一个值?如何让我的代码仅调用一次http并为将来的订阅保留该值?编辑:solutionishere

javascript - Rxjs toPromise 行为不同于可观察的行为

我有一个简单的例子,其中有两个方法创建并返回一个promise。第二个方法buildRedCar()调用第一个方法buildCar(),修改promise返回的值并返回另一个promise。然后,代码调用buildRedCar(),并仅通过控制台记录结果。这在转换为promise时不起作用,但在使用直接可观察对象时它确实起作用。不有效:import*asRxfrom'rx';functionbuildCar():Rx.IPromise{letcar='Car';returnRx.Observable.just(car).toPromise();}functionbuildRedCar(

javascript - SystemJS 未找到 RxJS 根目录

SystemJS似乎可以毫无问题地加载rxjs模块,但会在rxjs目录本身上抛出404NotFound。所有模块都是最新版本,这似乎只是Windows上的问题,它适用于osx。获取http://localhost:8080/node_modules/rxjs/404(未找到)错误:错误:XHR错误(404未找到)XHR完成加载:GET"localhost:8080/node_modules/rxjs/Subject.js"。XHR完成加载:GET"localhost:8080/node_modules/rxjs/operator/toPromise.js"。Moduleloads&Er

javascript - Rxjs 如何知道可观察到的订阅者有多少?

当我有多个订阅者订阅一个observable时,例如:constmyInterval=Rx.Observable.interval(500);constsubscriptionOne=myInterval.subscribe(val=>doSomething());constsubscriptionTwo=myInterval.subscribe(val=>doSomething());我如何知道有多少订阅者仍然注册到myInterval可观察对象?例如,我需要此信息以防止内存泄漏,以防我忘记取消订阅其中一个? 最佳答案 当使用an

javascript - 如何在 RxJS 中将可变长度数据包流转换为固定长度数据包?

我是RxJS的新手。给定以下流['foo','bar','b','az12','3','4567']我想将其转换为固定大小的数据包(比如3个字节)+余数['foo','ba','rb','az','123','456','7']在现实生活中,它实际上是一个二进制数据缓冲区。我想知道惯用的RxJS方法是什么。我发现的简单方法是:from(['foo','bar','b','az12','3','4567']).pipe(Rx.concatMap(v=>from(v)),Rx.bufferCount(3),Rx.map(v=>v.join(''))).subscribe(v=>consol