RxJs:我如何进行同步请求?

时间:2016-04-16 00:04:45

标签: javascript http asynchronous rxjs

我正在尝试一次发出数千个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')
);

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以查看<label for="dwfrm_cart_couponCode"> CODE </label> <input type="text" placeholder=" CODE" name="dwfrm_cart_couponCode" id="dwfrm_cart_couponCode"> <button type="submit" value="dwfrm_cart_addCoupon" name="dwfrm_cart_addCoupon" id="add-coupon"> </button> <div class="error"> Please Enter a Code </div> merge(maxConcurrency)重载。您可以首先回顾这两个SO问题:Guard AuthenticationHow to limit the concurrency of flatMap?,然后是文档链接: