簡體   English   中英

映射方法內部的異步可觀察方法

[英]Async Observable method inside of a map method

什么是轉換數組並在內部調用少量可觀察方法的最佳方法?

我正在尋找的是這種類型的東西可以工作:

   resultArray = someArray.map(item => {
      oneObs.subscribe(result1 => {
           item.result1 = result1
      });
      secondObs.subscribe(result2 => {
           item.result2 = result2
      });
   });

最好的方法是什么? 我只想出一種解決方法來使用這種forEach循環:

   someArray.forEach(item => {
      Observable.forkJoin([oneObs, secondObs]).subscribe(
        (results: [Result1Type, Result2Type]) => {
           item.result1 = results[0];
           item.result2 = results[1];
           resultArray.push(item);
       });
    });

任何幫助表示贊賞。

您嘗試混合同步和異步代碼,這可能會導致某些奇怪的行為。 我的建議是將數組轉換為可觀察的數組(使數組異步)以獲取結果,然后將完成的結果再次轉換為數組:

Observable.from(someArray) // 1
    .mergeMap(item => Observable.forkJoin(oneObs, twoObs)
            .map(results => {
                item.result1 = results[0];
                item.result2 = results[1];
                return item;
            }))
    .toArray() // 2
    .subscribe(arr => resultArray = arr);
  1. 基於數組創建一個可觀察的
  2. 等待所有可觀察對象完成,並創建一個包含所有結果值的數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM