2017-04-22 6 views
0

私は両方向(2+)とリアクティブプログラミングの両方にかなり新しいです。だから私は、私はとにかくここに、間違った方法でこれに近づくかもしれない感じが、私は、シーケンシャルに同期順序をやろうとしているものですがあります。angular(2)とrxjsを使ってシーケンシャルなAjaxを実行する方法

  1. ダウンロードしたメタデータ・ファイル「a.json」から一定の経路。
  2. javascriptオブジェクト "a"への応答を解析します。値 "a.url"を読み込みます。 「a.url」
  3. 解析ファイル「a.res」から
  4. ダウンロードファイル「a.res」と「」メタデータとコンテンツを含む「a.content」
  5. 戻りオブジェクトに書き込みます。

私はjQueryと約束でこれを行う方法を知っていますが、私はこれをオブザーバブルでどのように接近させるのか少しわかりません。

更新:ここ は、私はjQueryの中でそれを行うだろうか、簡単な例である:

function loadTwo() { 
    var deff = $.Deferred(); 

    $.getJSON("test.json").done(a => { 
     $.get(a.url).done(res => { 
      a.content = res; 
      deff.resolve(a); 
     }); 
    }); 

    return deff; 
} 

loadTwo().done(a => console.log(a)); 

これはそのような Object {url: "FileInfo.xml", content: document}

+0

を呼び出します。httpへとRx.Observable.of( 'resを')あなたはjQueryの実装が表示できます。Rx.Observable.of({ 'ジュリアURL})を置き換えますか?あなたはそれを高レベルに保ち、(非常に)高水準のステップを概説するために機能を使用することができます。その実装をrxjsに変換する手助けができます – snorkpete

答えて

0

何かを生み出します。

Rx.Observable.of({url: 'julia'}) 
    .map(({url}) => ({url: url, a: {url: url}})) 
    .switchMap(({url, a}) => 
     Rx.Observable.of('res') 
     .map(res => Object.assign({}, a, {res: res}))) 
    .subscribe(x => console.log(x)) 
関連する問題