RxJs有条件的去抖动和采样

时间:2019-03-31 18:27:34

标签: angular rxjs rxjs-pipeable-operators

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

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 $具有真实值,则应跳过debounceTimesample

如何从animation $中提取值并应用逻辑(逻辑)。

只要我能做

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

1 个答案:

答案 0 :(得分:2)

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; 
});