Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用RXJs流切换和隐藏_Javascript_Rxjs - Fatal编程技术网

Javascript 使用RXJs流切换和隐藏

Javascript 使用RXJs流切换和隐藏,javascript,rxjs,Javascript,Rxjs,我正在尝试创建一个边栏菜单,使用RxJS作为练习。到目前为止,我得到的是: var hideStream = Rx.Observable .fromEvent(hideButton, 'click') .map(() => false); var toggleStream = Rx.Observable .fromEvent(toggleButton, 'click') .map(() => true); var resultStream = Rx.Observable.merg

我正在尝试创建一个边栏菜单,使用RxJS作为练习。到目前为止,我得到的是:

var hideStream = Rx.Observable
.fromEvent(hideButton, 'click')
.map(() => false);

var toggleStream = Rx.Observable
.fromEvent(toggleButton, 'click')
.map(() => true);

var resultStream = Rx.Observable.merge(
toggleStream, hideStream)
.startWith(false)
.scan(function(value, newValue) {
  if (newValue) {
    return !value;
  } else {
    return false;
  }
});
toggleStream
observable收听汉堡,并允许用户切换菜单的可见性。第二个可观察的
hideStream
必须能够隐藏菜单,无论当前状态如何

这是预期的工作,但我想知道是否有更好的方法。我在
扫描
操作员中所做的对我来说有点奇怪


这里的工作示例:

在我看来这很正常,我们可以在正确设置toggleStream之后,在合并hideStream和toggleStream时进一步简化事情:

var hideStream = Rx.Observable
.fromEvent(hide, 'click')
.mapTo(false);

var toggleStream = Rx.Observable
.fromEvent(toggle, 'click')
.mapTo(true)
.startWith(false)
.scan(value => !value);

var resultStream = Rx.Observable.merge(toggleStream, hideStream);