我有以下RXjs construction
(以可观察的方式显示),该链链接长的轮询请求。目标是在请求超时时重试请求,或使用request to 1
的内容。)更新ui state 2
。)使用响应中的新URI
开始新的更新循环
以下结构似乎无法正确发出内部事件-或在使用mergeMap
而非exhaustMap
时无限地发送内部事件。我在这里想念什么?
action$.pipe(
ofType(actions.LONG_POLL_CHAIN),
exhaustMap(action =>
from(apiClient.longPoll(uri)).pipe(flatMap(response => concat(
of(actionLongPollingSuccess(response)),
of(actionLongPollingContinue(response)))
))
)
在伪代码中,预期结果应为:
while(true){
action = actions.deduplicate().takeFirst();
if(!apiClient.isLongPollingRunning())
{
result = apiClient.longPoll(action.uri)
actions.push({ uri: result.uri}
actions.push({ data: result.data}) //consumed by other service
}
else {
actions.push({ uri : uri})
}
}