Angular 2可观察数组顺序

时间:2017-12-29 03:33:45

标签: angular rxjs observable

我正在创建一个可观察数组。

for (let i = 0; i < userinput.length; ++i) {
        const data = this.transformData(userinput[i]);
        observableBatch.push(this.http.post(this.submitApi, data, requestOptions).map(dataresponnse => dataresponnse.json() ,err => console.error(err))
          .catch(error =>  Observable.of(error) ));
      }
      return Observable.forkjoin(observableBatch);
 代码工作正常。但是数组的顺序不正确。我想得到最后一篇http帖子的结果,但是当我推送(进入数组)时,最后一篇http帖子的索引是不可预测的。有没有实现这一目标的方法?

2 个答案:

答案 0 :(得分:1)

对阵列进行构造,使其像您一样将参数逐个传递给forkJoin

return Observable.forkJoin(...observableBatch);

例如,这相当于:

return Observable.forkJoin(obs1, obs2, obs3, obs4, etc);

返回的映射值应该是一个数组,其结果与传递的顺序相同:

observable.subscribe(t=> { console.log(t[0]) /*res1*/, 
                           console.log(t[1]) /*res2*/,
                           console.log(t[2]) /*res3*/,
                           console.log(t[3]) /*res4*/,
                           etc... })

答案 1 :(得分:0)

您可以使用unshift代替使用push。 它将在第一个索引中添加您的最后一个HTTP呼叫后数据。 因此,您可以轻松预测上一个HTTP帖子的索引。