gpt4 book ai didi

angular - 在 Angular/RxJs 中,如何捆绑 http 请求以便一个 bundle 包含多个请求(http ://test/1, http ://test/2, 等)

转载 作者:行者123 更新时间:2023-12-05 07:31:29 25 4
gpt4 key购买 nike

我正在查看 bufferTime rxjs 运算符,并且基本上想用它来捆绑 http 请求( this.http.get<string>('http://test/?id={num}')) 。{num} 是 1 - 4。我想要的是每 2 秒捆绑一次这些请求。所以如果在 2 秒内发出 2 个请求,它们看起来像:

this.http.get<string>('http://testUrl?id=1')this.http.get<string>('http://testUrl?id=2')它们将作为 1 个请求发送到服务器(我指的是捆绑)。服务器将收到 'http://testUrl?id=1,2'

感谢阅读!

最佳答案

forkJoin 允许您并行触发您的请求,因此“捆绑”您的请求。

首先用你的延迟创建 Observables 数组:

let obs = Array
.from({length: 100}, (v, k) => k + 1)
.map(x =>
this.http.get<string>('http://test/{x}')
.pipe(concatMap(item => of(item.pipe(delay(2000)))))
);

然后只需使用 forkJoin 来触发它们:

forkJoin(obs)
.subscribe(x=>{
console.log(x)//an array of response from HTTP
})

上面的代码只会在 2*(100-1) = 198 秒内完成

关于angular - 在 Angular/RxJs 中,如何捆绑 http 请求以便一个 bundle 包含多个请求(http ://test/1, http ://test/2, 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51756987/

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