如何通过RXJS链传递参数?

时间:2018-03-23 17:29:48

标签: javascript rxjs rxjs5

我有一个包含3个项目的数组:

subscribe

我想为每个项目执行Ajax请求。那没问题 。但我还需要知道我在 from(this.arrActions).pipe( mergeMap((i) => this.ajaxAlike(i))) .subscribe(data => { console.log(data) }); 回调中处理哪个项目。

这就是我的尝试:

from(this.arrActions).pipe(  
      mergeMap((i) =>(of({data:i.data, url: this.ajaxAlike(i.url)}))))
      .subscribe(data => {
        console.log(data)
      });

返回:

https://groups.google.com/forum/#!topic/actionml-user/9gPlf5iWDWQ

但我不知道每个回调与哪个请求相关。

所以我想也许这样:

subscribe

但是现在,http没有执行:

enter image description here

此外,我认为我在这里做错了。

enter image description here

问题:

如何调用所有网址,并在http同时获得item结果+ MyModel.hasMany(models.MyModel2, {foreignKeyConstraint: true}); MyModel.hasMany(models.MyModelX, {foreignKeyConstraint: true}); 本身?

1 个答案:

答案 0 :(得分:2)

您可以在收到结果后映射每个结果:

from(this.arrActions)
  .pipe(
    mergeMap((i) => this.ajaxAlike(i)
      .pipe(
        map(result => ({ data: i.data, result })),
      )
    )
  )
  .subscribe(data => {
    console.log(data)
  }, err => {
    console.log(' error which is ->', err);
  });

这将打印以下输出:

{data: "5", result: "httpResponse"}
{data: "6", result: "httpResponse"}
{data: "7", result: "httpResponse"}

您更新了演示:https://stackblitz.com/edit/angular-http-client-y43j1w?file=app/app.component.ts