Angular 在RxJs中同步不同的方法调用和返回响应
我有一种从数据库中获取联系人数据的方法 本协议为:getContact(“联系人”) 在获得所需的输出后,我想借助下面的方法将其放入Json存储中: 这个.local.saveRecord(“contact”,c) 完成所有操作后,我想借助以下方法从存储中提取保存的数据: this.local.getRecordList(“联系人”) 这三个操作应按顺序执行,以返回给调用方。为了实现这一点,我尝试了以下代码:Angular 在RxJs中同步不同的方法调用和返回响应,angular,typescript,redux,rxjs,concatmap,Angular,Typescript,Redux,Rxjs,Concatmap,我有一种从数据库中获取联系人数据的方法 本协议为:getContact(“联系人”) 在获得所需的输出后,我想借助下面的方法将其放入Json存储中: 这个.local.saveRecord(“contact”,c) 完成所有操作后,我想借助以下方法从存储中提取保存的数据: this.local.getRecordList(“联系人”) 这三个操作应按顺序执行,以返回给调用方。为了实现这一点,我尝试了以下代码: public somemethod(): Observable<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
})
)
)
);
}
public somemethod():可观察{
返回此.getContact(“contact”)
.延迟(1000)
.烟斗(
concatMap(con=>
this.local.saveRecord(“contact”,con).延迟(1000)
)
)
.烟斗(
concatMap(联系人=>
此.local.getRecordList(“联系人”)管道(
地图((联系人:任意[])=>{
//数据处理
})
)
)
);
}
但是我得到的回应总是空的。我对RxJs操作符不太熟悉。如果需要,我们甚至可以跳过第二步,直接从数据库中获取数据。我应该使用不同的操作员来解决问题吗?或者我应该用不同的方式来思考?谢谢你的帮助。提前感谢。使用正确的运算符:
public somemethod(): Observable<Contact[]> {
return this.getContact("contact")
.pipe(
mergeMap(contact => this.local.saveRecord('contact', contact)),
mergeMap(record => this.local.getRecordList('contact'))
);
}
您应该从this.local.getRecordList('contact')
获得响应。是的,呼叫将按顺序进行
this.someService.somemethod().subscribe(contacts => {
console.log(contacts);
});