gpt4 book ai didi

javascript - 如何通过RXJS链传递参数?

转载 作者:行者123 更新时间:2023-12-01 02:16:51 25 4
gpt4 key购买 nike

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

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

我想对每个项目执行 Ajax 请求。那没问题 。但我还需要知道我在 subscribe 回调中处理哪个项目。

这是我尝试过的:

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

这将返回:

enter image description here

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

所以我想也许是这样:

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

但是现在,http 没有执行:

enter image description here

此外,我想我走错了路。

Online demo

问题:

如何调用所有 url,并在 subscribe 处获取 http 结果 + 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"}

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

关于javascript - 如何通过RXJS链传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com