小编use*_*051的帖子

RxJS:一个将自己的旧值作为输入的Observable

我正在尝试实现这样的事情:

// This obviously doesn't work, because we try to refer to `a` before it exists.
// c and m are some Observables.
const aSampled = a.pipe(
  rxjs.operators.sample(c),
  rxjs.operators.startWith(aInitial)
);
const a = m.pipe(
  rxjs.operators.withLatestFrom(aSampled),
  map(([mValue, oldAValue]) => {
    // Do something.
  }),
  rxjs.operators.startWith(aInitial)
);
Run Code Online (Sandbox Code Playgroud)

现在这显然是无法编译的废话,因为我们sample a在创建它之前就尝试这样做,但是希望它使我的意图很明确:每个发出的值a都应依赖于之前发出的旧值之一a。的哪个旧值a由上次c发出某种东西的时间决定。这有点像调用pairwise上a,但我不希望最后两个值,而是从更靠后的最新和另一个。

请注意,如果不是startWith(aInitial)位,这甚至不是一个定义明确的问题,因为by发出的第一个值a将循环引用其自身来定义。但是,只要a分别指定第一个值,该构造就具有数学意义。我只是不知道如何以干净的方式在代码中实现它。我的直觉是,通过编写某种自定义主题可以有一种long回的方式,但是更优雅的做法将是非常受欢迎的。

为了使这一点更加具体,在我的用例中,我处理的是UI元素的单击并拖动到平移类型。m是mousemove事件的可观察性,c是事件的可观察性mousedown。a然后,它将根据光标所在的位置以及a …

javascript rxjs reactivex

5
推荐指数
1
解决办法
121
查看次数

标签 统计

javascript ×1

reactivex ×1

rxjs ×1