Angular 订阅流后如何返回数据?

Angular 订阅流后如何返回数据?,angular,typescript,rxjs,subscription,Angular,Typescript,Rxjs,Subscription,订阅流后如何返回数据? 例如,我在subscription中获取URL,然后我希望返回包含基于此URD的数据的流 public get() { this.service.getData().subscribe((data: any) => { // data was setted here this.url = data; }); return this.http.get(this.url) .map(r =>

订阅流后如何返回数据? 例如,我在subscription中获取URL,然后我希望返回包含基于此URD的数据的流

public get() {
    this.service.getData().subscribe((data: any) => {
        // data was setted here
        this.url = data;
    });

    return this.http.get(this.url)
        .map(r => {
            ...
            return obj;
        });
}

尝试:


您应该为此使用
concatMap
(或
mergeMap
)并将其转化为一个链:

public get() {
  this.service.getData().do((data: any) => {
      // data was set here
      this.url = data;
    })
   .concatMap(data => this.http.get(data))
   .map(r => {
     ...
     return obj;
    });
}
或者您甚至不需要使用
this.url
(我不知道您的用例是什么)

     public get() {
        this.service.getData().subscribe((data: any) => {
        // data was setted here
        this.url = data;
        this.get2(this.url);
        });
}
public get2(url){
     return this.http.get(url)
      .map(r => {
        ...
        return obj;
      });
}
public get() {
        this.service.getData().subscribe((data: any) => {
        // data was setted here
        this.url = data;

        //get data with the URL
        return this.http.get(data)
            .map(r => {
                //Get something with data obtained with the URL
                return obj;
              });
        });
      }
public get() {
  this.service.getData().do((data: any) => {
      // data was set here
      this.url = data;
    })
   .concatMap(data => this.http.get(data))
   .map(r => {
     ...
     return obj;
    });
}
public get() {
  this.service.getData()
   .concatMap(url => this.http.get(url))
   .map(r => {
     ...
     return obj;
    });
}