我有一个API,可以返回“ RequestedTooSoon”的响应并包含“ NotBefore”时间戳。
我的目标是引入人为延迟,以便任何消费者都觉得请求花费的时间比花费的时间更长。应该将响应延迟到“ NotBefore”时间过去。
// Consumer:
verifyAuth() {
authService.verify(...).subscribe(...)
}
在我的AuthService.verify(...)
方法内部,我试图节制,但是仔细阅读RxJS
文档似乎变得很明显throttle
不是我正在寻找的运营商:
this.apiHttp.post<VerificationResponse>('api/verify', ...)
.pipe(
throttle(response => {
const nowInMs = Date.now();
const throttle = response.NotBefore.getTime() - nowInMs;
return timer(throttle);
})
)
我无法识别适当的运算符(如果存在)。
是否有一个开箱即用的运算符可以实现我所追求的目标?还是有更合适的方法?
我的下一步将是实现一个接受delay
的{{1}}运算符。
答案 0 :(得分:0)
已经存在一个延迟,看到它需要一个固定值,您将需要将Map切换到它,这样您就可以运行一个函数来确定输入时间
this.apiHttp.post<VerificationResponse>('api/verify', ...)
.pipe(
switchMap(response => of(response).pipe(
delay(response.NotBefore.getTime() - (new Date()).getTime()))
)
)