相关疑难解决方法(0)

我如何使用RxJS 5无损限制请求的等级

我想使用向服务器发出一系列请求,但是服务器的硬速率限制为每秒10个请求。如果我尝试循环发出请求,那么它将达到速率限制,因为所有请求都将同时发生。

for(let i = 0; i < 20; i++) {
  sendRequest();
}
Run Code Online (Sandbox Code Playgroud)

ReactiveX有很多用于修改可观察流的工具,但是我似乎找不到实现速率限制的工具。我尝试添加标准延迟,但请求仍同时触发,仅比之前晚100ms。

const queueRequest$ = new Rx.Subject<number>();

queueRequest$
  .delay(100)
  .subscribe(queueData => {
    console.log(queueData);
  });

const queueRequest = (id) => queueRequest$.next(id);

function fire20Requests() {
  for (let i=0; i<20; i++) {
    queueRequest(i);
  }
}

fire20Requests();
setTimeout(fire20Requests, 1000);
setTimeout(fire20Requests, 5000);
Run Code Online (Sandbox Code Playgroud)

debounceTimethrottleTime运营商都相似,我正在寻找为好,但是这是不是无损有损。我想保留我提出的每个请求,而不是丢弃先前的请求。

...
queueRequest$
  .debounceTime(100)
  .subscribe(queueData => {
    sendRequest();
  });
...
Run Code Online (Sandbox Code Playgroud)

如何使用ReactiveX和Observables向服务器发出这些请求而又不超过速率限制?

javascript reactive-programming rxjs

5
推荐指数
1
解决办法
1508
查看次数

标签 统计

javascript ×1

reactive-programming ×1

rxjs ×1