描述:后台同学调用第三方接口拿到数据给前端渲染页面,问题是后台数据没有及时同步到位。故此要求前端对接口执行轮询。{首次请求数据未同步过来时,执行setInterval 2s一次 3次},
这样写有什么问题吗?或是朋友有简洁的代码供学习下。谢谢大佬。
或是对此情况有更好的方案 求指点。
代码如下:
- const loadPacketInfo= () => {
- return new Promise((resolve, reject) => {
- getPacketApi()
- .then((result) => {
- resolve(result);
- })
- .catch((err) => {
- resolve({});
- });
- });
- };
复制代码- //queryAction 触发操作
- const queryAction = () => {
- Toast.loading({
- message: '加载中...',
- duration: 0,
- forbidClick: true,
- });
- loadPacketInfo().then((res) => {
- const { data, errno } = res;
- if (errno === '0') {
- if (data.mixedData && data.mixedData.length === 0) {
- let num = 0;
- const timer = setInterval(() => {
- num++;
- if (num > 3) {
- Toast.clear();
- clearInterval(timer);
- return;
- }
- loadPacketInfo().then((result) => {
- const { data } = result;
- if (data.mixedData && data.mixedData.length > 0) {
- updateWrap(data.mixedData);
- Toast.clear();
- clearInterval(timer);
- }
- });
- }, 2000);
- } else {
- if (data.mixedData && data.mixedData.length > 0) {
- updateWrap(data.mixedData);
- Toast.clear();
- }
- }
- }
- });
- };
复制代码
|