问题标签 [rxjs5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
943 浏览

javascript - RxJS 轮询无限滚动上的行更新

我在https://www.youtube.com/watch?v=zlERo_JMGCw 29:38上观看 Matthew Podwysocki 活动

他在哪里解释了他们如何解决 netflix 上的滚动问题。用户滚动以获取更多数据,因为以前的数据被清理并且更多加起来(但向后滚动再次显示以前的数据)。

我想做类似的事情,但我抓住了 netflix 演示代码:

但是我对如何根据此处的滚动传递新数据或页面数据感到有些困惑。有人可以对我如何执行以下操作给出一点解释:

  • 获取第一个列表(我可以这样做)
  • 当用户向下滚动时获取更多列表(使用分页下一页)
  • 从内存中删除以前获取的数据,并根据请求重新获取(向上滚动)。
0 投票
1 回答
219 浏览

javascript - Complex RxJS iterator only visible rows

We have over 500 rows from list on each request, sometimes it's 10 and sometimes its huge.

I want to take that array and only show what is visible on the screen and hide everything else, but has user scroll down it will display other rows and hide previous ones.

This is bit complex, I was watching RxJS video and Netflix did similar. I'm not sure what functions to use to have this effect.

https://gist.github.com/iBasit/8ceef1db9de945a37559 Netflix example.

Our code:

0 投票
1 回答
3605 浏览

rxjs - RxJs noop 和 Identity 函数

我现在正在学习 RxJs,并且遇到了两个函数,它们是他们的助手库的一部分

根据 Rx.helpers.identity(x) 的 RxJs Helpers 文档,文档说这是一个函数,它只返回未经修改的传递给它的值。对于 Rx.helpers.noop,他们说这个函数真的什么都不做。

Q:提供这些功能的目的是什么,在什么场景下使用这些功能有用?

0 投票
11 回答
104758 浏览

angular - 如何使用 @ngrx/store 获取 State 对象的当前值?

我的服务类,在调用 Web 服务之前,需要dataForUpdate从我的状态中调用一个属性。目前,我正在这样做:

我使用 angular2-store-example ( https://github.com/ngrx/angular2-store-example/blob/master/src/app/users/models/users.ts ) 作为指导。

我想知道是否存在更好(更清洁)的方式?

现场示例:https ://plnkr.co/edit/WRPfMzPolQsYNGzBUS1g?p=preview

0 投票
2 回答
92 浏览

rxjs - 使用 Rxjs5 (Beta) 限制 http 请求

我正在使用 RxJS5 ( https://github.com/ReactiveX/RxJS ) 并且我正在尝试访问 Riot API,该 API 的上限率为每 10 分钟 500 个请求和每 10 秒 10 个请求。

我设置了一个请求对象流,我有一个订阅者准备好获取它们并实际请求它们,但我在 RxJS 有点新,不确定我应该使用哪个运算符来限制请求。

0 投票
2 回答
3148 浏览

javascript - rxjs5 - 通过每个对象包含的可观察对象过滤对象数组

我有一个看起来像这样的数组

我只想返回filter解析为真的项目,我将如何以最有效和最被动的方式做到这一点?我正在使用 rxjs5 beta2。


请注意,为了简单起见,它是一个伪代码,在我的真实案例中,过滤器实际上是一个对象,它被传递给一个验证函数,该函数返回一个解析为trueor的可观察对象false

0 投票
1 回答
898 浏览

javascript - Proper way to deal with errors thrown in "onNext" for hot, shared, observables

In RxJS version 5, the following code results in the process being terminated after three iterations of both subscriptions:

However, my understanding was that an error thrown in the next handler would simply unsubscribe that particular subscription, and not cause the underlying observable to terminate. My expected output would be that the "One" subscription would unsubscribe, but the interval would continue to produce results to the "Two" subscription.

This behavior is causing me issues, where I may have multiple subscriptions to an underlying hot observable - yet a single exception thrown on any of those subscriptions causes the underlying observable to completely terminate.

It's especially annoying when I'm in development using hot module reloading, since any programming error in any subscription causes me to have to refresh the entire page to re-start the observable sequences.

Is there a way, without wrapping each of my subscriptions in a try/catch, to have an exception thrown in my next handler to simply unsubscribe that ONE subscription, and not terminate the underlying observable?

------------ EDIT ------------

I've found the behavior that I'm looking for, by setting syncErrorThrowable to true on the subscription object returned by "subscribe". It seems that the only time this is ever set to true in the codebase is via the "do" operator.

Should I take advantage of this field? I feel pretty dirty using it, but on the other hand I find it strange that the "do" operator has different error handling semantics than the "next" subscription handler.

Here's the primary block of code affected by this flag: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L132

If it's set to false, this method gets invoked: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L179

Whereas if it's set to true, this method is used instead: https://github.com/ReactiveX/RxJS/blob/master/src%2FSubscriber.ts#L188

The difference is that the first method will re-throw the exception back up the callstack, whereas the second one instead propagates the error forward to subsequent subscriptions.

Why does the do operator propagate the error forward, whereas the "next" handler bubbles the error back up? This seems odd to me.

0 投票
1 回答
13347 浏览

return-type - 如何使用返回类型从 TypeScript 方法中的 Observable 返回

我在 TypeScript 中有一个 Google 地理编码服务。在获取给定地址的纬度/经度后,我需要此方法返回“GoogleMap”类。

我创建了一个返回“GoogleMap”类型的 TypeScript 方法。但是,我得到一个

既不是 void 也不是 any 的函数必须返回一个值...

这是我的方法:

我可以理解 http 调用将是异步的,并且流程应该继续到方法的底部,可能在响应返回数据之前。要返回“GoogleMap”,我需要等待这个 Observable 吗?我该怎么做呢?

谢谢!

更新:2016年 4 月 21 日 我终于偶然发现了一种让我感到满意的方法。我知道有许多来自开发人员的帖子乞求“真正的”服务。他们想向服务传递一个值并取回一个对象。相反,许多答案并没有完全解决问题。简单的答案通常包括调用方的 subscribe() 。这种模式的缺点,通常不被提及,是你必须映射在调用者的回调中在服务中检索到的原始数据。如果您只从代码中的这一位置调用此服务,则可能没问题。但是,通常情况下,您将从代码中的不同位置调用该服务。因此,每次,您都会在调用者的回调中一次又一次地映射该对象。如果向对象添加字段怎么办?现在,您必须在代码中寻找所有调用者来更新映射。

所以,这是我的方法。我们无法摆脱 subscribe(),我们也不想这样做。在这种情况下,我们的服务将返回一个Observable<T>拥有我们珍贵货物的观察者。从调用者那里,我们将初始化一个变量 ,Observable<T>它会得到服务的Observable<T>. 接下来,我们将订阅这个对象。最后,你得到你的“T”!从您的服务。

以我的例子为例,现在已修改。记下这些变化。首先,我们的地理编码服务:

因此,我们将 googleMap 对象包装在“观察者”中。现在让我们看看调用者:

添加此属性:

呼叫者:

如果您注意到,调用者中没有映射!你只是拿回你的对象。所有复杂的映射逻辑都在服务中的一个地方完成。因此增强了代码的可维护性。希望这可以帮助。

0 投票
3 回答
2727 浏览

javascript - RxJS 5.0 类似机制的“do while”

我正在尝试使用 RxJS 进行简单的简短投票。delay它需要每秒向服务器上的位置发出一次请求path,一旦达到以下两个条件之一就结束:回调isComplete(data)返回 true 或者它已经尝试了服务器超过maxTries. 这是基本代码:

但是,在 RxJS 5.0 中不存在 doWhile,因此只能尝试服务器的条件maxTries有效,这要归功于 take() 调用,但isComplete条件不适用。我怎样才能做到这一点,所以 observable 将 next() 值,直到 isComplete 返回 true,此时它将 next() 该值和 complete()。

我应该注意到这takeWhile()对我不起作用。它不返回最后一个值,这实际上是最重要的,因为那是我们知道它完成的时候。

谢谢!

0 投票
2 回答
948 浏览

rxjs5 - 如何在 RxJS5 中恢复 OnError(或类似的)

我想使用onErrorResumeNextRxJS 的特性,即即使收到错误也继续接收事件(而不是终止)。

但我可以在以下文档中看到 RxJS5 中没有对应关系:https ://github.com/ReactiveX/RxJS/blob/master/MIGRATION.md 。

是否有使用此类功能的解决方法?谢谢!