我需要一种方法来等待RXJS完成他的工作。
这是我的功能:
getLastOrderBeta() {
return this.db.list(`Ring/${localStorage.getItem('localstorage')}`, {
query: {
equalTo: false,
orderByChild: 'status',
limitToLast: 2,
}
})
.map((orders: any) => {
return orders.map((order: any) => {
order.userInfo = this.getProfile(order.userid);
return order;
});
}).do((s:any)=>{
console.log(s);
console.log(here);
});
}
当我有一个项目时,日志正常:
当我有两个项目时,相同的日志是正常的:
但是当我有三个项目时,日志会重复:
可能是上次导致此问题的限制。 有任何帮助来解决这个问题吗?
感谢。
答案 0 :(得分:0)
假设您的getLastOrderBeta
方法返回Observable
,您可以使用Promise
将其转换为toPromise
:
const valueAsPromise = getLastOrderBeta().toPromise()
如果您的Promise
在任何地方投掷并以最后一次发现的价值结算,则此Observable
会拒绝。
valueAsPromise
.then((value) => {
// last value from your observable
})
.catch((error) => {
// something bad happened
})
如果您需要等待多个发射值,则可以先调用toArray
:
const valuesAsPromise = getLastOrderBeta().toArray().toPromise()
这将导致Promise与所有发出的值一起解析。
如果您需要自定义逻辑来聚合发布的值,请使用reduce
。