- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用这两种(完全相同的方法)来调用 throttleTime,但我不确定它们是否真的相同。
this.scrollSubject$ = new Subject<Event>();
this.scrollSubscription$ = this.scrollSubject$
.asObservable()
.throttleTime(400, undefined, { trailing: true })
.subscribe(event => this.throttledScrollHandler(event));
同上,但使用asObservable
this.scrollSubscription$ = this.scrollSubject$
.throttleTime(400, undefined, { trailing: true})
.subscribe( event => this.throttledScrollHandler(event));
我忘记在我的第二个上添加 asObservable
,但它的行为方式相同,这令人惊讶。这两种方式一样吗?
我在 Angular 中使用 Observables,但我认为这不是 Angular 特有的
最佳答案
题中问题的答案是:是的,如果要保证题主的next
、error
和complete
方法不能通过组合的可观察对象调用,您应该使用 asObservable
。
所以问题中的两个片段是不一样的。
Subject
实现了 lift
.这意味着从运算符返回的可观察对象是一个 Subject
。因此,除非调用 asObservable
,否则可能会调用 next
、error
或 complete
组合可观察。
const subject = new Rx.Subject();
const withoutAsObservable = subject
.do(value => console.log(value));
console.log("withoutAsObservable is a subject:", withoutAsObservable instanceof Rx.Subject);
const withAsObservable = subject
.asObservable()
.do(value => console.log(value));
console.log("withAsObservable is a subject:", withAsObservable instanceof Rx.Subject);
subject.subscribe(
value => console.log("subject value:", value),
error => console.log("subject error:", error)
);
withoutAsObservable.next("some value");
withoutAsObservable.error(new Error("some error"));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://unpkg.com/rxjs@5/bundles/Rx.min.js"></script>
有关提升
的更多信息,请参阅this issue .
关于您对另一个答案的评论:
I can call this.scrollSubscription$['next'](new Event('asdf'));, and throttledScrollHandler() will print out that event
在 Subscription
上调用 next
会调用从 创建的
您传递给 Subscriber
上的 next
方法>nextsubscribe
的函数。它与主题无关,也不等同于调用主题的 next
方法。
订阅
的实现calls toSubscriber
和那个订户is returned . Subscriber
extends Subscription
, 但它也有一个 next
method .这就是你所说的。
关于javascript - Rxjs throttleTime - 我们需要使用 asObservable 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477299/
我已阅读 throttleTime documentation ,但我没有完全了解运算符。 我知道 throttleTime(1000) 是如何工作的。事件到达后,它将跳过所有后续事件 1 秒,然后再
我一直在使用这两种(完全相同的方法)来调用 throttleTime,但我不确定它们是否真的相同。 this.scrollSubject$ = new Subject(); this.scrollSu
我正在构建一个 RxJS 幻灯片,如果用户按住右箭头键,我想每隔 500 毫秒导航到下一个图 block 。我正在使用 throttleTime,如下所示: const forwardNavigati
我正在尝试对某个主题使用 throttleTime 运算符。我已经导入了运算符(operator)。我收到此错误:this.cropSubject.asObservable(...).throttle
我正在使用 angular/cli": "~6.1.5 和 rxjs": "^6.0.0作为 Angular 6 的新手,我开始从官方文档中学习 http://reactivex.io/rxjs/cl
我想了解 throttleTime 与 debounceTime 以及何时使用哪个? 我有一个投票按钮,可以向后端发出 API 请求(计算选票)。用户可以多次提交按钮,但我想限制每秒可以按下按钮的次数
对于我的生活,我无法完成这项工作。我搜索了又搜索,但找不到任何示例(所有示例都包含 .fromEvent(),http.get 中没有)。 在我的模板中,我有这样的输入: 在我的组件中,我有以下内容
我是一名优秀的程序员,十分优秀!