- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为键盘驱动的界面创建了一个关键服务,我发现它似乎为每个订阅者执行完整的链:
this.documentKeyEvent = Observable.fromEvent(document, 'keydown')
.do((e: KeyboardEvent) => console.log(e.keyCode || e.which))
.filter((e: KeyboardEvent) => !isKeyModified(e) && !!Keys[remap(e.keyCode || e.which)])
.do((e: KeyboardEvent) => e.preventDefault())
.throttle(() => Observable.timer(100))
.map((e: KeyboardEvent) => remap(e.keyCode || e.which));
第一个 .do()
中的 console.log
执行了三次,因为有三个订阅者。这不一定是问题,但随着更多组件订阅它,效率似乎会变得相当低下。
有没有办法让每个事件只执行一次该链,然后将这些结果推送给所有订阅者,然后执行他们想要的操作?
谢谢
最佳答案
是的,您可以使用 share
作为你的最后一个运算符(operator):
this.documentKeyEvent = Observable.fromEvent(document, 'keydown')
.do((e: KeyboardEvent) => console.log(e.keyCode || e.which))
.filter((e: KeyboardEvent) => !isKeyModified(e) && !!Keys[remap(e.keyCode || e.which)])
.do((e: KeyboardEvent) => e.preventDefault())
.throttle(() => Observable.timer(100))
.map((e: KeyboardEvent) => remap(e.keyCode || e.which))
.share();
这实际上将在所有订阅者之间共享流。
注意:share
是 publish().refCount()
的别名 - 有关详细信息,请参阅文档:publish
关于javascript - RxJS Observable.fromEvent 链为每个订阅者触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818270/
是否需要基于控件取消订阅事件。 HTML输入: const blur$ = fromEvent(formEle, 'blur').subscribe(x => { this.focused
我正在使用 FromEvent KeyUp 和 debounceTime 在我的应用程序中实现非常简单的搜索功能,如下代码: @ViewChild('inputSearch', { static:
在Observable.FromEvent中有这样一个签名的目的是什么? ?对于 example : var appActivated = Observable.FromEvent( h => App
使用新的 async/await 模型,生成一个在事件触发时完成的 Task 相当简单;你只需要遵循这个模式: public class MyClass { public event Acti
我试图按照 practical observable usage 上的官方 Angular 教程进行操作并尝试导入“fromEvent”: import { fromEvent } from 'rxj
我们如何使用 jasmine 测试 Observable.fromEvent @ViewChild('d') private inputDatePicker: NgbInputDatepicker;
我正在开发 WPF 应用程序以使用 MVVM 练习 Rx。 场景 我有一个带有组合(一些公司名称)和一个详细信息(公司日志)部分的 View (MVVM);当用户从组合框中选择一个项目时,我想填充详细
我为键盘驱动的界面创建了一个关键服务,我发现它似乎为每个订阅者执行完整的链: this.documentKeyEvent = Observable.fromEvent(document, 'keydo
我有两个关于同一件事的问题。 首先,这是在 RxJs 中提交表单的正确方法吗?我正在尝试订阅 mouseEvent,如果是单击,则会向我的后端发出 POST 请求 所以在 react 中我这样做: u
我正在尝试使用 Reactive Extensions 编写代码来处理异步调用,其中启动方法和完成的事件都是静态的。我不会用 var languageSetsLoaded = Observable
我需要连接 rn-fetch-blob 的 onData可观察对象的回调方法。 据我所知,这不是一个事件,fromEventPattern无法使用。我看不到如何使用 create如果这是我的问题的解决
假设我们有以下代码 const clickEvent$ = fromEvent(document, 'click').pipe( pluck('target') ); clickEvent$.
我正在尝试根据光标的位置更改元素的位置。因此我有以下代码: this.ngZone.runOutsideAngular(() => { fromEvent(window, 'mousemove'
假设我有一组股票代码: StockTicker stockTicker = new StockTicker("MSFT", "APPL", "YHOO", "GOOG"); stockTicker
如何将事件数据附加到 Observable.fromEvent? 在我的示例中,我有以下对象数组 var people = [ { name: "Bert", img: "" }, {
我正在尝试从输入事件创建一个 Observable。我已经尝试了几乎所有的方法,但我无法导入“fromEvent”。这是我的代码。我正在使用 Angular 6.0.1 和 RXJS 6.1.0 错误
热/冷/多播可能会造成混淆。我想我现在已经明白了,但我想确认我理解正确。 Looking at the source for rxjs's implementation for fromEvent ,
我有一个 Angular 应用程序,其中包含多个具有特定 ID 的按钮。它们每个都有一个单击函数,我想跟踪用户是否单击了按钮而不更改每个方法中的任何内容。 示例代码: import { Compo
今天我在使用RxJS时遇到一个奇怪的问题。请帮我检查一下。 我正在解决的问题是:“给定一组图像 URL,加载所有图像并将其附加到 div。” 所有要演示的代码片段都在这里: https://paste
我想获取控件的 DataContext 作为 IObservable。我试过这个: Observable.FromEvent (a => this.DataContextChanged +=
我是一名优秀的程序员,十分优秀!