我将首先添加代码,我得到的结果以及最终我想获得的内容以及是否可能。
我得到的结果是Array [object,object,...],其中object是Array
export class SomeService {
....
....
public someFunction(): MyObject[]{
Observable
.forkJoin(this.userItemsA(userId), this.userItemsB(userId), etc)
.filter(each => {
for (let array of each) {
let x: any = <any> array;
return x.length > 0;
}
})
.map(result => {
return result;
})
.subscribe(result => {
/// what i would like to do for example assuming only 1st array has items
/// do something here with result[0]
/// return MyObject[] from result[0]
});
....
}
}
过滤结构
我正处于angular2和反应式编程的早期学习阶段,我想要的是过滤,以便地图结果只是至少有一个项目的数组。
谢谢
答案 0 :(得分:1)
而不是 function GenerateTable(data) {
document.getElementById('divExport').style.display = "";
if (i == 0) {
$('#oReportContractDetailsByCA').append("<tr style='background-color:" + bkColor + ";'><td><img src='../../../_layouts/15/1033/IMAGES/eContracts/checked-checkbox-512.jpg'></img></td></tr>")
}
使用.filter
.map
答案 1 :(得分:1)
不幸的是,这不适用于forkJoin
。它的作用是将几个Observable连接到单个 Observable,因此如果它们中的任何一个被过滤掉,整个连接的Observable会被中断/过滤。
正如@Martin所说,你必须在map
分支中进行过滤。