Javascript 如何通过RXJS链传递参数?
我有一个包含3项的数组: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
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有什么纯粹的关系。没有?)啊哈,好的,没问题