Javascript 等待上一个操作执行

Javascript 等待上一个操作执行,javascript,rxjs,Javascript,Rxjs,假设我们有两个按钮。第一个按钮以1000ms的延迟执行操作,而另一个按钮以2000ms的延迟执行操作。当点击一个按钮时,我想等待它的执行,然后才允许从另一个按钮执行操作 例如,单击按钮2,然后单击按钮1,只会导致执行操作2按钮(基本上,按钮1的操作将被忽略,因为操作2尚未执行)。如何使用rxjs库实现这一点 const btnOne = document.querySelector('#btn1'); const obs1 = rxjs.fromEvent(btnOne, 'click').pi

假设我们有两个按钮。第一个按钮以1000ms的延迟执行操作,而另一个按钮以2000ms的延迟执行操作。当点击一个按钮时,我想等待它的执行,然后才允许从另一个按钮执行操作

例如,单击按钮2,然后单击按钮1,只会导致执行操作2按钮(基本上,按钮1的操作将被忽略,因为操作2尚未执行)。如何使用rxjs库实现这一点

const btnOne = document.querySelector('#btn1');
const obs1 = rxjs.fromEvent(btnOne, 'click').pipe(
    rxjs.operators.delay(1000)
);

const btnTwo = document.querySelector('#btn2');
const obs2 = rxjs.fromEvent(btnTwo, 'click').pipe(
    rxjs.operators.delay(2000)
);

const generalObs = rxjs.merge(obs1, obs2).pipe(
    rxjs.operators.take(1),
    rxjs.operators.repeat()
);

generalObs.subscribe(result => console.log(result.target));

检查这个stackblitz:它演示了如何使用操作符来实现您描述的行为

不同的map操作符是最重要和最常用的操作符之一。查看下面的文章,以更好地解释您可以使用或执行的操作


阅读本文后:使用我发布的stackblitz并替换为,或者,看看这会如何影响行为;)

请看一下@Mirakurn-谢谢,但请考虑到我想使用rxjs库实现这一点。我不确定我是否正确理解了您的问题。我是否可以说,您只想在任何其他异步操作正在进行时禁用按钮?或者,按下按钮1是按下按钮2的先决条件吗?@Davy是的,我只想在任何异步操作进行时“禁用”(不是真正禁用,但不是启动任何操作)按钮。这就是我下面的回答,否?