Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 同步处理可观察的订阅事件_Javascript_Rxjs5 - Fatal编程技术网

Javascript 同步处理可观察的订阅事件

Javascript 同步处理可观察的订阅事件,javascript,rxjs5,Javascript,Rxjs5,我正在寻找一种以同步方式处理来自ReplaySubject.subscribe()的事件的方法 let onSomeEvent = new ReplaySubject(); onSomeEvent.subscribe(async (event) => { return await this.saveEventToDb(event); }); 在本例中,saveEventToDb()首先检查数据库是否已存储具有相同ID的事件。如果没有,则存储它 问题是我需要解释从主体触发

我正在寻找一种以同步方式处理来自
ReplaySubject.subscribe()
的事件的方法

let onSomeEvent = new ReplaySubject();

onSomeEvent.subscribe(async (event) => {      
  return await this.saveEventToDb(event);
});
在本例中,
saveEventToDb()
首先检查数据库是否已存储具有相同ID的事件。如果没有,则存储它

问题是我需要解释从主体触发的重复事件

在本例中,当2个重复事件背靠背触发时,这两个事件都会被添加到数据库中,因为
saveEventToDb()
会立即被调用两次,而不会等待上一次调用完成


如何使用Rxjs将这些事件排队?

以下操作用于同步处理事件:

onSomeEvent
    .map(event => {
       return Observable.defer(() => {
          return this.saveEventToDb(event);
       });
    })
    .concatAll()
    .subscribe();
:收集观测值,并在上一个完成时订阅下一个