Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 有限卷轴的可观测阵列合并_Angular_Rxjs_Observable_Infinite Scroll_Angular Meteor - Fatal编程技术网

Angular 有限卷轴的可观测阵列合并

Angular 有限卷轴的可观测阵列合并,angular,rxjs,observable,infinite-scroll,angular-meteor,Angular,Rxjs,Observable,Infinite Scroll,Angular Meteor,在Ionic2+Angular2+Meteor移动应用程序中,联系人以无限滚动选项列出。在滚动期间,联系人应在20个批次中追加 import {Observable} from "rxjs"; contacts: Observable<Contact[]>; /* code to pull Contacts from collection */ findContacts() :Observable<Contact[]> {

在Ionic2+Angular2+Meteor移动应用程序中,联系人以无限滚动选项列出。在滚动期间,联系人应在20个批次中追加

    import {Observable} from "rxjs";
    contacts: Observable<Contact[]>;

    /* code to pull Contacts from collection */
    findContacts() :Observable<Contact[]> {
            return Contacts.find({accessGroup: {$in: this.sourcingUser.accessGroup}
                                          }, {sort: {firstName: 1}} )
                      .mergeMap<Contact[]>(contacts =>
                          Observable.combineLatest(
                            ...contacts.map(contact =>
                                Suppliers.find({supplierId: contact.supplierId})
                                .startWith(null)
                                .map(suppliers => {
                                    if(suppliers){
                                      contact.supplier = suppliers[0];
                                    }
                                    return contact;
                                })
                              ))).zone();      
     }


      // Code to append contacts
      this.contactsSub =  MeteorObservable.subscribe('contacts', options).subscribe(() => {
          MeteorObservable.autorun().subscribe(() => {
              if(!this.contacts){
                  this.contacts = this.findContacts();
              } else {
                  this.contacts = this.contacts.merge(this.findContacts());
              }
         });
      });
从“rxjs”导入{Observable};
接触:可见;
/*从集合中提取联系人的代码*/
findContacts():可观察{
返回Contacts.find({accessGroup:{$in:this.sourcingUser.accessGroup}
},{sort:{firstName:1}})
.mergeMap(联系人=>
可观察的(
…contacts.map(contact=>
Suppliers.find({supplierId:contact.supplierId})
.startWith(空)
.map(供应商=>{
if(供应商){
contact.supplier=供应商[0];
}
回接;
})
))).zone();
}
//附加联系人的代码
this.contactsSub=MeteorObservable.subscribe('contacts',options)。subscribe(()=>{
MeteorObservable.autorun().subscribe(()=>{
如果(!this.contacts){
this.contacts=this.findContacts();
}否则{
this.contacts=this.contacts.merge(this.findContacts());
}
});
});
当显示前20个联系人并附加下20个联系人时,此代码工作正常。但在那之后,每次都会保留前20个联系人,新应用的联系人将被findContacts()方法中的新20个联系人替换

所以它总是只显示40个联系人。是否仍然需要将联系人追加/合并到现有联系人列表中?非常感谢您的帮助

谢谢,
Annadurai。

问题的根本原因是在我的案例中执行mergeMap时出现的性能问题。我已经删除了mergeMap,并以不同的方式处理了业务需求,以解决此报告的问题

在“combine RxJs Observable array”中添加注释时,可能会出现重复的问题,因为添加注释的字体似乎非常小,并且文本未格式化。团队,是否有人可以在这方面提供帮助?您最终是如何处理的?