我目前正尝试使用这个链接https://davidwalsh.name/javascript-polling(以及其他很多链接)为我的应用程序添加轮询。
我已经可以访问以下已实现的API:
client.get('url')
// returns Promise with result of getting result from url
// for the application I am working on,
// the URL returns json that looks like the following
// {status: DONE or IN PROGRESS, other values...}
// when status is DONE other values are what I will use in the application
client.post('url', {data: passAnyDataHere})
// sends a post request with result of sending data to url
// starts the specific job
我遇到的一个问题是,在尝试调整我上面链接的JavaScript轮询代码时,当我发现状态为DONE时,我没有办法将结果返回到Promise之外。 有人能给我一些如何做到这一点的提示吗?(不断轮询直到找到特定值,然后返回该值以供稍后使用)
让我举个例子
export default function someFunction() {
let a = client.get('/status');
a.then( dataResult =>
{
if (dataResult.status == "DONE") {
//** want to get other values in dataResult here
// and store it somewhere else for use later
}
});
// ***want to work with results here.
// need some way to get the status of what happened inside the .then(..) part
// eventually have to return success or failure and results to the frontend
// (this part is already done)
}
代码的基础是https://github.com/erikras/react-redux-universal-hot-example#server-side-data-fetching(使用React.js / Node.js / Redux等)。
欢迎提供任何提示/建议/帮助。谢谢!
此外,我正在开发的应用程序不使用JQuery。
fn
花费很长时间才能完成,那么下一次轮询就要等到fn
返回后才会发生,对吗?例如,假设fetchReport
花费6秒钟才能完成,而ms
是3000(或3秒)。这意味着API调用需要6秒钟>等待另外3秒钟才能进行下一次API调用>再花费6秒钟>等待另外3秒钟,以此类推。这意味着每次轮询之间的间隔为9秒。我理解得对吗? - 7balln
秒触发一次操作,但最好避免重叠的相同调用。如果你的API调用需要6秒钟,而你不想等待其他3秒钟,你可以减少额外的等待时间。 - KyleMit