在我发送请求之前,我需要收集几个事件,而不是每次都收集。
const subject = new Subject();
subject.subscribe((event) => post(event));
const keydown$ = fromEvent(document, 'keydown');
keydown$.subscribe(d => subject.next(d);
答案 0 :(得分:1)
答案 1 :(得分:0)
如果我找到了你,你需要在keydown$
被触发后取消订阅subject
。您需要使用takeUntil
运算符:
keydown$.takeUntil(subject).subscribe(d => subject.next(d);
如果您可以按时间汇总事件,可以使用像
这样的smthconst DELAY_TIME = /** some delay time */ 2000;
const subject = new Subject();
subject.subscribe((event) => post(event));
const keydown$ = fromEvent(document, 'keydown');
keydown$
.scan( (acc, cur) => [ ...acc, cur ], [] )
.delay(DELAY_TIME)
.last()
.subscribe( eventsArray => subject.next(eventsArray) )