Javascript 如何通过RXJS链传递参数?

Javascript 如何通过RXJS链传递参数?,javascript,rxjs,rxjs5,Javascript,Rxjs,Rxjs5,我有一个包含3项的数组: arrActions: Array<Item> = [{ url: 'http://1.com', data: '5' }, { url: 'http://2.com', data: '6' }, { url: 'http://3.com', data: '7' }]; 这将返回: 但我不知道每个回调与哪个请求相关 所以我想可能是这样的: fr

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

arrActions: Array<Item> = [{ url: 'http://1.com', data: '5' }, 
                           { url: 'http://2.com', data: '6' }, 
                           { url: 'http://3.com', data: '7' }];
这将返回:

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

所以我想可能是这样的:

from(this.arrActions).pipe(  
      mergeMap((i) =>(of({data:i.data, url: this.ajaxAlike(i.url)}))))
      .subscribe(data => {
        console.log(data)
      });
但现在,http没有执行:

此外,我想我走错了方向

问题:


如何调用所有URL,并在
subscribe
处同时获取
http
result+
item
本身?

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

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"}

您已更新演示:

您只需在收到每个结果后映射即可:

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"}

您已更新演示:

谢谢。:)(顺便说一句,我不想放angular标签,因为它和rxjs有什么纯粹的关系。没有?)啊哈,好的,没问题,谢谢。)(顺便说一句,我不想放angular标签,因为它和rxjs有什么纯粹的关系。没有?)啊哈,好的,没问题