Angular 角度2&;RxJS:使用Rx Observable映射阵列

Angular 角度2&;RxJS:使用Rx Observable映射阵列,angular,typescript,rxjs,rxjs5,Angular,Typescript,Rxjs,Rxjs5,我有这样一个数字数组:[1,2,3],HTTP服务具有按数字加载数据对象的功能,如下所示: function get(id: number): Observable<object> 函数get(id:number):可观察 如何将我的原始数字数组映射到保留元素顺序的对象数组?您可以使用运算符 const Observable = Rx.Observable; function mockHttpRequest(i) { return Observable.of(i).dela

我有这样一个数字数组:[1,2,3],HTTP服务具有按数字加载数据对象的功能,如下所示:

function get(id: number): Observable<object>
函数get(id:number):可观察
如何将我的原始数字数组映射到保留元素顺序的对象数组?

您可以使用运算符

const Observable = Rx.Observable;

function mockHttpRequest(i) {
  return Observable.of(i).delay(500);
}

Observable.from([1, 2, 3])
    .concatMap(i => mockHttpRequest(i))
    .subscribe(data => console.log(data));
这模拟了多个HTTP请求,其中每个请求延迟500毫秒。操作符
concatMap()


请参阅现场演示:

感谢@martin,我找到了此解决方案:

const myPromise = val => new Promise(resolve => setTimeout(() => resolve(`Promise Resolved: ${val}`), 
                                                          Math.round(Math.random() * 1000 + 1000)))
const queue = Rx.Observable.of([1,2,3,4,5]);
const result = queue
  .mergeMap(q => Rx.Observable.forkJoin(...q.map(myPromise)));
const subscribeTwo = result.subscribe(val => console.log(val));

1) 我希望可以同时调用可观察对象,而不是按顺序调用,我希望结果按顺序调用。2) 我想要得到结果数组,而不是单个数组values@Rem他们认为你需要更好地阐述你的问题。您没有提到要并行运行请求的任何位置。顺便说一句,看看
forkJoin
操作符。