组合RxJs Observable数组

时间:2017-01-30 04:50:05

标签: angular meteor ionic2 rxjs infinite-scroll

我试图在一个列出联系人的Ionic2 + Meteor移动应用程序中进行无限滚动。在以下代码中,findContacts()函数一次返回10个联系人。         联系人:可观察;

  findContacts() :Observable<Contact[]> {
    /* logic to pull Contacts is here ...*/
  }

  this.contactsSub =  MeteorObservable.subscribe('contacts', options).subscribe(() => {
      MeteorObservable.autorun().subscribe(() => {
        if(!this.contacts) {
          this.contacts = this.findContacts();
        }
      });
  });

每次用户滚动到列表末尾并获得接下来的10个联系人时,都会调用此代码。但这里的问题是,它不会附加到已经列出的联系人身上。它只显示了新拉出的10个联系人。我尝试了Observable.concat,但它没有给出令人反感的结果。当我尝试使用mergeMap时,它会出现无关紧要的循环和错误。 你能告诉我如何连接Observable数组对象吗?任何帮助是极大的赞赏。我已经坚持这个问题一个多星期了。 感谢。

1 个答案:

答案 0 :(得分:0)

您可以通过将联系人更改为数组

来实现此目的
contacts: Array<any>= []
findContacts() :Observable<Contact[]> {
    /* logic to pull Contacts is here ...*/
  }

  this.contactsSub =  MeteorObservable.subscribe('contacts', options).subscribe(() => {
      MeteorObservable.autorun().subscribe(() => {
          this.findContacts().subscribe(data => {
                this.contacts = this.contacts.concat(data);
        });
      });
  });