网站搜索

javascript - 同时从 'lodash'、'rxjs'、'ramda' 导入 { map },而不影响可读性

如何从多个导入中导入 map 或 merge 或任何其他函数?

import { map } from 'lodash'; import { map } from 'rxjs/operators'; import { map } from 'ramda';

显而易见的答案是:

import { map as _map } from 'lodash'; import { map as rxMap } from '

阅读更多 →

javascript - 如何在 RxJS(或一般在响应式扩展中)实现时间过期的热观察者

我想用 RxJs 实现带有时间过期的缓存。这里是一个“普通”缓存的例子:

//let this represents "heavy duty job" var data = Rx.Observable.return(Math.random() * 1000).delay(2000); //and we want to cache result var cachedData = new Rx.AsyncSubject(); data.subscribe(cachedData);

阅读更多 →

javascript - RXJS 使用 observable 作为条件的 if

我想使用 Rx.Observable.if 来运行两个可观察对象中的一个,如果条件可观察对象解析为 true 或 false。

我想要实现的效果大概像这样:

Rx.Observable.if(conditionalObservable.map(x => x.length > 0), firstObservable, secondObservable).subscribe()

如果 conditionalObservable 发送了一个 next 然后以 true 值完成,则应运行 firstObservable

阅读更多 →

javascript - 错误:在 Ionic Angular 中找不到模块 "rxjs/operators"

我正在尝试运行我的 Ionic 项目。几天前它还运行正常,但现在无论我做什么都无法运行。这个错误不断出现!我尝试从 package.json 和 node_modules 中移除 Rxjs,也注释掉了所有使用 Rxjs 的地方,但错误依旧出现。在 Ubuntu 16.04 上使用 Node 8.9.0 和 npm 4.5.0 尝试过,也在 Windows 上运行过,但仍然显示同样的错误!我该如何解决这个问题?

答案#1

尝试重新安装版本为 5.5.3 或更高版本的 rxjs

npm in

阅读更多 →

javascript - RxJS 带优先级的防抖

我在想这个直播时遇到了困难。

我正在寻找的是类似 debounceTime 的东西,但带有优先级。

所以如果我有形状为 { type: 'a', priority: 2 } 的事件。这些事件需要被防抖几秒钟,但不是最后一个事件被触发,而是触发具有最高优先级的事件。

input stream: ------(a|1)--(b|3)---(c|2)-----------------------(a|1)----------------- output stream: -----------------------------------(b|3)---------------------

阅读更多 →

javascript - RXJS 顺序链式依赖的 observables,但获取每次发射以更新进度条

我遇到了一个问题,我一直在尝试使用RxJs寻找解决方案,但似乎找不到合适的...

  • 我有3个不同的REST请求,它们将依次调用,并且每个请求都需要前一个请求的响应作为参数
  • 我想实现一个进度条,随着请求成功而递增

这是我的想法:

  • 我打算使用管道和concatMap()来避免嵌套订阅,并在前一个请求完成后订阅每个请求。

考虑这个非常简化的版本。假设每个

阅读更多 →

javascript - RxJS:我如何在 Observables 中使用“if”?

假设我有两个可观察对象,我想在其中一个可观察对象发生变化时监听,但前提是另一个可观察对象满足某个条件。我尝试过使用 zip,但似乎只有在 两个 可观察对象都发生变化时才会收到通知,而我希望只要一个可观察对象变化,并且另一个的条件为真时就能收到通知。

我尝试过的事:

var firstState = new Rx.BehaviorSubject(undefined); var secondState = new Rx.BehaviorSubject(undefined); Rx.Observable.zip(firstState, secondState, function

阅读更多 →

javascript - 在 RxJS 中计算一段时间内的事件并每秒输出一次总和

在 RxJS 中,有可能在一段时间内对事件进行计数,并每秒输出一次总和吗?我有一个连续不断的事件流。我希望每隔 1 秒就能得到过去 5 分钟时间窗口内的事件总数。这个想法是用它来填充实时图表。

我知道如何用传统方法做这件事,但真的很想理解如何用响应式编程来做。

答案#1

这是我会处理它的方法。

创建一个可观察对象,它只计算接收到的事件数量并将其作为运行总计发出(通过 scan

阅读更多 →

在使用 Angular 2 + TypeScript 时,如何在 RxJs 中限制 mousemove 事件的频率?

我正在学习 RxJs。我使用的是 Angular2 rc3。以下流可以工作,但它给我带来了过多的 mousemove 事件。我想使用时间(节流)或其他控制流来减慢它们。 我该如何做到这一点?

鼠标移动流无节流

const mouseMove$ = Observable.fromEvent<MouseEvent>(document, 'mousemove'); mouseMove$.subscribe( x => console.log(

阅读更多 →

typescript - 在 RxJS/Angular 中组合可管道操作符

是否可能(我找不到任何全面的资料)将多个可管道操作符组合到一个函数中,这样我就可以在管道中使用它,并在不同的方法中重复使用?

事情是这样的:

public ngOnInit(): void { this.route.url .pipe( switchMap( (ids: UrlSegment[]) => /* http call */), tap(result => /* setting a variable within a service */), tap(

阅读更多 →