for循环中的几个异步调用,需要知道何时使用可观察对象完成所有调用

时间:2018-12-19 17:50:42

标签: javascript angular rxjs observable

我正在for循环内进行递归调用,如何知道何时使用可观察对象或其他技术完成所有调用?以下代码可以正常工作,但是我知道有更好的方法来实现。

    let assync_service_lenght = groups.length;
    let assync_count = 0;
    groups.forEach(group=> {
      //get contacts from groups
        this.serviceGroups.getGroupsPeople(group.value).subscribe(res => {
            //ADD NEW CONTACT

            assync_count++
            if(assync_service_lenght==assync_count){
              this.sendHTTP(sms);
            } 
      });
    });

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

from(groups)
  .pipe(mergeMap(group => this.serviceGroups.getGroupsPeople(group.value)))
  .subscribe(
    () => console.log('add new contact'),
    e => console.error('error', e),
    () => {
      this.sendHTTP(sms);
    }
  );