我正在尝试轮询返回JSON的端点,直到其中一个:
JSON可能如下所示:
{
"job": "some-job-id"
"completed": false
}
我想做的是这样的:
completed
是true
,请返回JSON attempts
<我们的最大值,请等待几秒钟,然后重试subscribe
中捕获)我认为将retryWhen
/ delay
或timer
组合使用是可行的,但是到目前为止,我尝试过的一切似乎都一次发送了多个查询。
import { of, throwError } from 'rxjs/index';
const http: HttpClient; // Angular's http client
http.get<{ job: string, completed: boolean }>(`http://example.com/jobs/${id}/`).pipe(
retryWhen(err => err.pipe(
flatMap(status => status.completed ? of(status) : throwError(`not yet completed`)),
delay(5000),
)),
);
```
谢谢!