【问题标题】:RxJs: How can I make synchronous requests?RxJs:我怎样才能发出同步请求?
【发布时间】:2016-04-16 00:04:44
【问题描述】:

我试图一次发出数千个 http 请求,但我的互联网连接崩溃了 :)

这就是为什么我希望使用 RxJS Observables 实现一个函数,该函数将同时的异步请求限制为定义的最大数量。

例如,如果最大数量为 3,则请求的工作方式如下:

r-----R--->
r---R----->
r-------R->
----r---R->
------r--->
--------r->
--------r->

这是一个 JSBin 示例,其中所有请求都使用请求模拟函数一次发送 http://jsbin.com/vemewu/4/edit?js,console

function makeTestRequest() {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, 1000);
  });
}

let requests = _.range(0, 100).map(() => makeTestRequest);

var requests$ = Rx.Observable.fromArray(requests);

requests$.subscribe(
  () => console.log('request done'),
  () => console.log('error'),
  () => console.log('completed')
);

谢谢!

【问题讨论】:

    标签: javascript http asynchronous rxjs


    【解决方案1】:

    您可以查看merge(maxConcurrency)flatmapwithmaxconcurrentoverload。您可以先查看这两个 SO 问题:How to limit the concurrency of flatMap?Limit number of requests at a time with RxJS,然后是文档链接:

    【讨论】:

    • 谢谢!我终于使用合并方法实现了它
    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2018-09-21
    • 2012-06-14
    • 2019-06-09
    相关资源
    最近更新 更多