2017-09-15 5 views
0

私はObservableでGETリクエストを持っています。 Observerに結果を送付したい。残念ながら、GETの実行が終了する前でもオブザーバーと通信するため、未定義の値を送信します。これが問題です。あなたは、消費側からこのRxjs Observableが未定義を送信する - それを避ける方法

getDataFromMyUrl() { 
    return this.http.get(myUrl).map((programs)=>{ 
      const mapped = programs.json() as Program[]; 
      return mapped; 
     }) 
} 

ような何かを行うことができます

observer:Observer<any> = { 
    next: objectFromObservable => { SomeActionWith() } 
} 


let outputToObserver; 
    this.http.get(myUrl).map((programs)=>{ 
      const mapped = programs.json() as Program[]; 
     outputToObserver=mapped //here we always have desired object 
      return mapped; 
     }) 
     .subscribe(
     (res)=>{ 
      return res; //here we always have desired object 
     } 
    ) 
    //Here outputToObserver is undefined, so above lines are executed before mapping 
     let observable:Observable<any> = Observable.create(function (obserwator) { 
     observer.next(outputToObserver) 
+0

このコードで達成したいことを正確に理解するのは少し難しいです。要件を指定できる場合、私はそれを解決するのを手助けすることができます。 –

+0

ありがとうございました。できるだけ早く編集しました。 –

答えて

1

あなたはまたやると副作用として、それを発射することができ、この

var getData = getDataFromMyUrl() 
       .subscribe(res => { 
        // Process the data here.... 
       }); 
0

ような何かを行うことができ、この場合、コードをより読みやすく線形にすることができます。

let outputStream=new Subject() 

this.http.get(myUrl).map((programs)=>programs.json()) 
.do(value=>outputStream.next(value)) 
.subscribe() 

outputStream.subscribe() 
関連する問題