作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试制作我认为的 pausable buffer
我有人为此分享了他们的代码,但我不知道如何将其变成自定义操作(没有 typescript /只有 ES6.
const attach = Rx.Observable.timer(0 * 1000, 8 * 1000).mapTo('@');
const detach = Rx.Observable.timer(4 * 1000, 8 * 1000).mapTo('#');
const input = Rx.Observable.interval(1* 1000);
const pauser = attach.mapTo(true).merge(detach.mapTo(false));
input
.publish(_input => _input
.combineLatest(pauser, (v, b) => b)
.filter(e => e)
.publish(_switch => _input.bufferWhen(() => _switch.take(1)))
)
.flatMap(e => Rx.Observable.from(e))
.concatMap(e => Rx.Observable.empty().delay(150).startWith(e))
input.pausableBuffer(pauser)
(也许定义一个startsWith)。
最佳答案
您可以像这样将其添加到原型(prototype)中:
var pausableBuffer = function(pauser) {
return this.publish(_input => _input
.combineLatest(pauser, (v, b) => b)
.filter(e => e)
.publish(_switch => _input.bufferWhen(() => _switch.take(1)))
)
.flatMap(e => Rx.Observable.from(e));
}
Rx.Observable.prototype.pausableBuffer = pausableBuffer;
.startWith(true)
至
pauser
.
var pausableBuffer = function(pauser) {
return this.publish(_input => _input
.combineLatest(pauser.startWith(true), (v, b) => b)
.filter(e => e)
.publish(_switch => _input.bufferWhen(() => _switch.take(1)))
)
.flatMap(e => Rx.Observable.from(e));
}
Rx.Observable.prototype.pausableBuffer = pausableBuffer;
var pausableBuffer = function(pauser) {
return (source) => source.pipe(publish(_input =>
combineLatest(_input, pauser.pipe(startWith(true))).pipe(
map(([inp, pa]) => pa),
filter(pa => pa),
publish(_switch => _input.pipe(bufferWhen(() => _switch.pipe(take(1)))))
)),
mergeMap(e => from(e))
);
}
关于rxjs - 如何使用 rxjs 5 创建一个 pausableBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40557715/
我正在尝试编写一个基于 websocket rxjs 的包装器。 我正在努力理解 rxjs。 我有一个暂停流,它应该在发生错误时暂停可暂停的缓冲流,并在我从 websocket 中得到“ok”后恢复它
我正在尝试制作我认为的 pausable buffer 我有人为此分享了他们的代码,但我不知道如何将其变成自定义操作(没有 typescript /只有 ES6. const attach = Rx.
我是一名优秀的程序员,十分优秀!