我有一种从数据库中获取联系人数据的方法。
this.getContact(“ contact”);
获得所需的输出后,我想借助以下方法将其放入Json存储区:
this.local.saveRecord(“ contact”,c);
完成所有操作后,我想借助以下方法从存储中获取保存的数据:
this.local.getRecordList(“ contact”)
这三个操作应按顺序执行以返回到调用方。为此,我尝试使用以下代码:
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
})
)
)
);
}
但是我得到的答复总是Null。我对RxJs运算符不太熟悉。我们甚至可以跳过第二步,并根据需要直接从数据库中获取数据。我应该使用不同的运算符解决问题吗?还是我会以不同的方式思考?帮助表示赞赏。预先感谢。
答案 0 :(得分: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')
的回复。是的,呼叫将被排序。