1

根据来自其他流的值有条件地向流添加去抖动时间

const configuration$ = new Subject().asObservable();
const animation$ = new BehaviorSubject(false).asObservable;

以上来自一些服务

configuration$.pipe(debounceTime(CONSTANTS.DEBOUNCE),sample(interval(CONSTANTS.SAMPLE)));

configuration.subscribe(data=> {
   // do the stuff; 
});


如果 animation$ 具有 true 值,则debounceTime,sample应该被跳过。

如何从动画 $ 中提取值并应用 if else 逻辑。

如果我能做到

 configuration$.pipe(
    animation$ ? 
    pipe(debounceTime(CONSTANTS.DEBOUNCE),sample(interval(CONSTANTS.SAMPLE))) :
    of
);
4

1 回答 1

1
configuration$.pipe(
  withLatestFrom(animation$),
  filter((stream) => !stream[1]),

  // now the rest of the stream will only execute if animation$ emits true
  debounceTime(CONSTANTS.DEBOUNCE),
  sample(interval(CONSTANTS.SAMPLE)),
  map(stream=>stream[0])
);

configuration.subscribe(data=> {
   // do the stuff; 
});
于 2019-03-31T18:32:58.423 回答