订阅两个可观察对象,即另一个可观察HTTP内的可观察对象

时间:2020-07-27 03:16:17

标签: javascript angular

我是新手。我正在尝试一次发布并获取数据。我正在使用map并在组件中订阅外部可观察对象时订阅可观察对象。

add(data) {
  return this.postModel(`pathHere`, data)
  .pipe(map((resp) => {
    if(resp.models){
      return this.getRoomById(resp.models.id).subscribe();
    }
  }));
    }

2 个答案:

答案 0 :(得分:2)

我想您需要使用flatMap而不是map

add(data) {
  return this.postModel(`pathHere`, data)
  .pipe(flatMap((resp) => {
    if(resp.models){
      return this.getRoomById(resp.models.id);
    }
  }));
    }

答案 1 :(得分:2)

add(data) {
    return this.postModel(`pathHere`, data)
        .pipe(
            switchMap((resp) => {
                if (resp.models) {
                    return this.getRoomById(resp.models.id);
                }
                  return of(resp.models);
            })
        );
}

您可以使用switchMap发出另一个Observable

使用if语句检查resp.models时,必须处理resp.models不真实的情况。