Angular 有限卷轴的可观测阵列合并
在Ionic2+Angular2+Meteor移动应用程序中,联系人以无限滚动选项列出。在滚动期间,联系人应在20个批次中追加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[]> {
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”中添加注释时,可能会出现重复的问题,因为添加注释的字体似乎非常小,并且文本未格式化。团队,是否有人可以在这方面提供帮助?您最终是如何处理的?