【发布时间】:2019-07-29 01:53:50
【问题描述】:
我有一个端点,可以通过 GET 请求进行轮询,如果任务完成,它就会返回。{"status":"running"}
或{"status":"completed"}
我正在使用 redux-api-middleware 创建进行 api 调用的操作。
export const TASK_REQUEST = '@@unshorten/TASK_REQUEST';
export const TASK_SUCCESS = '@@unshorten/TASK_SUCCESS';
export const TASK_FAILURE = '@@unshorten/TASK_FAILURE';
export const check_task = (hash) => ({
[RSAA]: {
endpoint: '/api/task_status/'+hash+'/',
method: 'GET',
headers: withAuth({ 'Content-Type': 'application/json' }),
types: [
{
type:RASTERIZE_REQUEST,
meta:{hash:hash}
},
{
type:RASTERIZE_SUCCESS,
meta:{hash:hash}
},
{
type:RASTERIZE_FAILURE,
meta:{hash:hash}
},
]
}
})
我需要继续调用此操作并在两次调用之间等待 20 秒,直到端点返回 {"status":"completed"} 或达到 120 秒的最大超时时间。
我建议的解决方案是使用带有异步等待 20 秒的 redux thunk,重复调用上述操作,直到返回状态完成或达到超时。
上述部分我需要这样的商店:
{
initial_call_time:1,
last_call_time:12,
status:'running'
}
这样我可以在接下来的几次调用中检查存储变量,看看时间是否已过期或状态是否已完成
有更好的解决方案来处理这个用例吗?
【问题讨论】:
标签: reactjs redux-thunk