使用事件中的 Rx.Observable 暂停功能不会 运行 订阅功能
Using Rx.Observable from event with pausable does not run the subscribe function
注意:我在这里使用带有 rxjs(2.5.3) 的打字稿
我正在尝试确定屏幕上 5 秒的空闲点击时间
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
});
这是订阅功能
var noClickStreamSubscriber = noClickStream.subscribeOnNext(() => {
this.showLogoutWarning = true;
});
这可以很好地运行代码。订阅者在 5 秒内没有点击时被呼叫。
现在,我实际上希望能够在显示警告屏幕时暂停和恢复订阅功能中的 noClickStream。为此,我将 pausable() 添加到初始无点击流中。
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
})
.pausable();
现在 noClickStreamSubscriber 函数即使在 5 秒没有点击后也不会被调用 activity。 fromEvent 不支持暂停功能吗?
当可观察对象被声明为可暂停时订阅函数不执行的原因是事件流以暂停状态开始。要使流工作,在定义订阅函数后,必须调用 noClickStream.resume()。
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
})
.pausable();
var noClickStreamSubscriber = noClickStream.subscribeOnNext(() => {
this.showLogoutWarning = true;
});
noClickStream.resume(); // This has to be invoked
注意:我在这里使用带有 rxjs(2.5.3) 的打字稿
我正在尝试确定屏幕上 5 秒的空闲点击时间
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
});
这是订阅功能
var noClickStreamSubscriber = noClickStream.subscribeOnNext(() => {
this.showLogoutWarning = true;
});
这可以很好地运行代码。订阅者在 5 秒内没有点击时被呼叫。
现在,我实际上希望能够在显示警告屏幕时暂停和恢复订阅功能中的 noClickStream。为此,我将 pausable() 添加到初始无点击流中。
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
})
.pausable();
现在 noClickStreamSubscriber 函数即使在 5 秒没有点击后也不会被调用 activity。 fromEvent 不支持暂停功能吗?
当可观察对象被声明为可暂停时订阅函数不执行的原因是事件流以暂停状态开始。要使流工作,在定义订阅函数后,必须调用 noClickStream.resume()。
var noClickStream = Rx.Observable.fromEvent<MouseEvent>($window.document, 'click')
.bufferWithTime(5000)
.filter(eventBundle => {
return eventBundle.length === 0;
})
.pausable();
var noClickStreamSubscriber = noClickStream.subscribeOnNext(() => {
this.showLogoutWarning = true;
});
noClickStream.resume(); // This has to be invoked