Rxjs 观测值数组的合并结果

Rxjs 观测值数组的合并结果,rxjs,observable,Rxjs,Observable,我需要从我的状态中提取ID作为单独的Observables,将它们组合成一个Observable和subscribe()。 我需要我的订户最终得到一组解析的可观察的结果 此外,我还需要保持此订阅打开,因此如果我的内部可观察的更改之一,我的订户将收到通知 这是我的代码: getTransactionsById(TransactionId){ 可观察的返回(事务ID) .map(transactionID=>this.getTransactionByID(transactionID)); } thi

我需要从我的状态中提取ID作为单独的
Observable
s,将它们组合成一个
Observable
subscribe()
。 我需要我的订户最终得到一组解析的
可观察的
结果

此外,我还需要保持此订阅打开,因此如果我的内部
可观察的
更改之一,我的订户将收到通知

这是我的代码:

getTransactionsById(TransactionId){
可观察的返回(事务ID)
.map(transactionID=>this.getTransactionByID(transactionID));
}
this.TransactionService.GetTransactionsById(TransactionId)
.订阅(交易=>{
....
})
上述代码在subscriber函数中的结果是一个未解析存储的数组

如何解析每个存储并将它们组合在一起

我还尝试在
transactionId
s上使用
Observable.from()
,将每个ID转换为
Observable
,然后解析它。它工作正常,但我的订户会分别收到每个ID的通知。如果有办法批量处理所有
可观察的.from()
结果(同时保持订阅打开),请告诉我

这就是我的
Observable.from()
看起来的样子:

getTransactionsById(TransactionId){
返回事务ID
.mergeMap(transactionID=>this.getTransactionByID(transactionID));
}
this.TransactionService.GetTransactionsById(可观察的.from(TransactionId))
.订阅(交易=>{
....
})

我想你想要的是
组合测试。它不会发出任何值,直到所有内部可见光发出至少一个值。在这之后,每次有一个新的发射来自一个内部可观测物时,它都会发射最近的一个

以下是一些阅读材料:

以下是一个例子:

函数getTransactionByID(transactionId){ 让计数=0; 返回(transactionId)的可观测接收值 .delay(Math.random()*4000) .map(x=>`${x}:${count++}`) .重复(); } 函数getTransactionsById(TransactionId){ 返回Rx.Observable.CombineTest(transactionID=>getTransactionByID(transactionID)); } const transactionsIDs=[1,2,3]; GetTransactionsById(事务ID) .take(10) .subscribe(x=>{console.log(x);})
你想要什么样的行为还不完全清楚,但你很可能想要或者

分叉连接 当所有观测值完成时,发出一个数组,其中包含每个观测值最后发出的值

拉链 订阅所有内部观测值,等待每个观测值发出一个值。一旦发生这种情况,将发出具有相应索引的所有值。这将一直持续到至少一个内部可观察对象完成为止

组合测试 当任何可观察对象发出值时,从每个对象发出最新的值


例如:

getTransactionsById(TransactionId){
const transactions=transactionID.map(transactionID=>this.getTransactionByID(transactionID));
返回Observable.forkJoin(…事务);//如果需要,更改为zip或CombineTest
}
this.TransactionService.GetTransactionsById(['1','2','3'])
.订阅(([第一、第二、第三])=>{
log({first,second,third});
});

CombineTest的重要注意事项(来自文档):--在每个可观察对象至少发出一个值之前,不会发出初始值