0

我有一种方法可以从数据库中获取联系人数据。

this.getContact("联系人");

获得所需的输出后,我想借助以下方法将其放入 Json 存储中:

this.local.saveRecord("联系人", c);

一切完成后,我想借助以下方法从存储中获取保存的数据:

this.local.getRecordList("联系人")

这三个操作应按顺序执行以返回给调用者。为了实现这一点,我尝试了以下代码:

public somemethod(): Observable<Contact[]> {
return this.getContact("contact")
  .delay(1000)
  .pipe(
    concatMap(con =>
      this.local.saveRecord<Contact[]>("contact", con).delay(1000)
    )
  )
  .pipe(
    concatMap(contacts =>
      this.local.getRecordList<Contact>("contact").pipe(
        map((contacts: any[]) => {
          // Processing of data
        })
      )
    )
  );
}  

但是我得到的响应总是空的。我对 RxJs 运算符不太熟悉。如果需要,我们甚至可以跳过第二步,直接从数据库中获取数据。我应该使用不同的运算符来解决问题吗?还是我应该以不同的方式思考?帮助表示赞赏。提前致谢。

4

1 回答 1

1

使用正确的运算符:

public somemethod(): Observable<Contact[]> {
return this.getContact("contact")
  .pipe(
    mergeMap(contact => this.local.saveRecord('contact', contact)),
    mergeMap(record => this.local.getRecordList('contact'))
  );
}

现在要处理数据,只需调用

this.someService.somemethod().subscribe(contacts => {
  console.log(contacts);
});

你应该得到来自 的回复this.local.getRecordList('contact')。是的,呼叫将被排序。

于 2018-09-06T14:16:22.253 回答