【发布时间】:2016-10-04 18:44:13
【问题描述】:
我需要进行几个相互依赖的异步调用。我最初编写代码并使用Promise.all 逐步制作async。我遍历我的数据并创建了一个async 方法,以便将所有需要的操作放入一个数组中以传递给Promise.all()。这很好用,但我怎么能用 Observables 做同样的事情。我读过forkJoin 相当于Promise.all,但是我如何循环数据并包装我的async 函数,然后在移动到下一个flatMap 之前执行它?
public getMonthly(){
return this.http.get(url)
.flatMap(response => {
// need to convert this?
let actions = response.json().map(this.asyncMonthlyRecord);
return Promise.all(actions);
})
.flatMap(()=> this.queryMonthly())
.map(this.convertFromSQl)
.catch((error:any)=> Observable.throw(error || 'Server Error'));
}
private asyncMonthlyRecord = (record):Promise<any> => {
return this.setUsage(record,'HILowMonthly');
}
private queryMonthly(){
return this.storage.query('SELECT * FROM HILowMonthly')
}
getMonthly().subscribe(x => console.info(x)); // logs data from SQLite perfectly...
【问题讨论】:
-
为什么投反对票?
标签: javascript asynchronous rxjs observable