我需要轮询数据直到response.Status === 'UpdatesComplete'
。 我已经编写了这个节点js API函数,它基本上轮询数据 -
const getResults = async (location) => {
try {
const response = await poll(location);
if (response.Status && response.Status === 'UpdatesComplete') {
return response;
}
return await getResults(location);
} catch (err) {
throw err;
}
};
app.get('/url', async (req, res) => {
try {
const results = await getResults(req.query);
res.json(formatData(results));
} catch (err) {
res.status(500).send(err);
console.error(err);
}
});
我从 ComponentDidMount 生命周期方法中的 ReactJS 类组件调用此 API -
componentDidMount = () => {
axios.get('url', {
params: params
})
.then(response => {
console.log(response.data, 'data');
// setting the data on state
this.setState({ filteredList: response.data });
})
.catch(err => {
this.setState({ error: true });
});
};
这工作正常。但是由于 API 在获取所有数据之前返回数据(在进行轮询后(,因此加载数据需要很长时间。我基本上正在寻找返回轮询数据以便在获取数据后立即查看,并同时轮询 API,直到获取所有数据。在这种情况下,数据将在视图上的每次轮询后不断更新,这将改善用户体验。 提前谢谢。
您在服务器端找到lazy loading
或infinite scroll
解决方案。没有简单的方法可以做到这一点。
该解决方案的基本思想是通过轮询paginate
您的结果。 从客户端调用url?size=2&offset=0
。然后在服务器端只需轮询前 2 个结果并返回。下次打电话url?size=2&offset=2
等等。