나는 (시간이 걸리는) 계산, 그런 일이 있습니다경과 타이머와 함께 RxJS를 사용하여 처리하는 동안 관찰 가능한의 항목을 생략하는 방법
async calculation(input: MyInputType): Promise<MyOutputType> {
// fetch some infos from an HTTP endpoint
// calculate result by combining received infos with input
return result; // Promise which resolves after all calculation is complete
}
계산에 대한 입력을 통해 다른 구성 요소에서 온다
관찰 할 수있는 것 (BehaviorSubject
)은 때때로 처리 할 수있는 것보다 빠르게 항목을 방출합니다. 따라서 출력은 http 엔드 포인트에서 관찰 가능하고 가져온 정보에 따라 달라지며, 때때로 변경 될 수도 있습니다.
중요 : 만마지막 계산 결과 내 응용 프로그램에 대한 관련 언제든지 변수에 사용할 수 있어야합니다.
내 목표는 다음과 같은 동작과 설정에 관찰 체인을 RxJS하고 반응 연산자를 사용하는 것입니다 : 계산은 무시해야 처리하는 동안 (서비스 거부를 방지하기 위해 backpressuring) 방출 소스 BehaviorSubject
에서
- 항목 그러나 ...
- 현재 계산이 완료되거나 시간 초과가 발생하면 새 계산 항목이 있으면 가장 최근 입력 항목에 대해 새 계산을 직접 시작해야합니다.
- 5 분 이상 계산이 시작되지 않은 경우 가장 최근의 입력 항목으로 새 계산을 다시 시작해야합니다. (만료되는 HTTP 정보를 업데이트하는 것이 중요합니다.)
이 문제를 어떻게 해결할 수 있습니까?
(RxJS 5, TypeScript, Node.js를 사용하고 있지만 다른 언어의 반응 형 솔루션도 환영합니다.)
나는이 질문이 당신이 성취하려고 노력하는 것과 아주 흡사하다고 생각한다. https://stackoverflow.com/q/46785128/482868 –
계산에 5 분 이상이 걸리면 어떻게됩니까?새 계산이 아직 시작 되었습니까? 그렇다면 이전 계산은 어떻게됩니까? – concat
좋은 질문이지만 두 번째 글 머리 기호에서 언급 한 시간 제한으로 인해이 문제가 발생하지 않아야합니다. 이 계산 제한 시간 초과는 물론 5 분 미만입니다. 따라서 결과는이 상황에서 버려 질 수 있습니다. – Niehno