草庐IT

rxjs_observable

全部标签

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

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

javascript - 展平嵌套的 Observable

我被困在嵌套的可观察hell中,需要一只手。我有以下代码块returnthis.findUser(term).map(users=>{returnusers.map(user=>this.getLastLogin(user.user_id).map(last_login=>{user.last_login=last_login;returnuser;}));});findUser返回Observable和getLastLogin返回Observable.我基本上希望获取用户列表,然后使用来自另一个值的信息更新它。现在上面的代码正在返回[]>.我想我可以替换初始的map与flatMap但

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

javascript - 为什么在对 RxJs Subject 调用 complete() 之后我不能再调用 next() 了?

我有连接Subject()的服务来进行分页。我正在使用next(newData)传递给主题,这让事情保持活力,现在我需要在每个ajax调用上使用complete()并将其传递给主题。但是在执行了一个complete()之后,我开始出错了。我想知道,如果completed()已经被触发,我们是否仍然可以传递Subjectobservables还是next(newData)? 最佳答案 有一些关于堆栈溢出问题的主题信息:here.我鼓励您查看它。关于您的具体问题,受试者一旦完成就不能再发射。这是他们遵守的契约(Contract)的一部分

javascript - RxJS 比命令式更快吗?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我是函数式编程和函数式响应式编程方面的新手。我读了很多遍函数式响应式编程的强大力量。好的;可读性强,避免副作用等。但是...我不知道如何以功能性/react性方式改进我的代码,以便比命令式方式执行得更快。这可能吗?也许我错过了什么?因为在我的函数式编程代码中,每个任务都在迭代:对于过滤器、映射、缩减……这比较慢。是否可以将所有事情迭代一次?也许使用compose()?谢谢。性能测试:命令式vsFPvsFR

javascript - 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性

在Angular2中使用新的http服务,我想对我的错误做更多的事情,而不仅仅是在控制台中抛出错误。不幸的是,我似乎无法从catch回调函数中访问我的对象属性。我的http服务调用:returnthis.http.get(this.apiUrl,options).map(this.extractData,this).catch(this.handleError)我的handleError回调fn:handleError(error){console.log(this)//undefined!if(error.status===401){this.router.navigate(['/l

javascript - RxJS 6 - 在管道中首次使用时是否需要取消订阅?

给定以下代码functiontriggerAction(){constasyncAction$=of("value1");asyncAction$.clientLogin().pipe(first(),tap(val=>console.log(`Test:${val}`)),).subscribe();}我需要退订吗?以前,当将first与修补运算符一起使用时,它们会在发出第一个事件后自行取消订阅,但从文档中无法立即清楚地知道等效的管道运算符是否也这样做。https://www.learnrxjs.io/operators/filtering/first.htmlhttps://rxj