2017-04-22 39 views
0

我對於角度(2+)和反應式編程都很新穎。所以,我有一種感覺,我可能會在錯誤的方式處理這個,反正這裏是我想要的順序做,同步命令:如何使用angular(2)和rxjs做順序ajax

  1. 下載的元數據文件「a.json」從不變的路徑。
  2. 將響應解析爲JavaScript對象「a」。讀取值「a.url」。
  3. 下載文件從「a.url」
  4. 解析文件「a.res」「a.res」,並寫入「a.content」
  5. 返回對象「一」包含元數據和內容。

我知道如何做到這一點與jQuery和承諾,但我有點無知如何處理這與observables。

更新: 下面是一個簡單的例子,我怎麼會做它在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

你能證明你的jQuery實現?你可以保持高水平,並使用函數來描述(非常)高級別的步驟。然後,我們可以幫助您將該實現轉換爲rxjs – snorkpete

回答

0

類似的東西。更換Rx.Observable.of(網址:{url: '朱莉婭'})和Rx.Observable.of( '水庫')以HTTP調用

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))