实现每隔两秒轮询查询接口返回结果是否成功,成功就展示结果,未成功继续轮询查询
useEffect(() => {
if (isOpen) {
//开启轮询查询
LoopSearch();
} else {
//清除輪詢
clearInterval(timer);
}
//弹窗关闭销毁循环定时器
return () => {
clearInterval(timer);
};
}, [isOpen]);
/**
* @description: 轮询查询新建导入数据结果
* @return {*}
*/
const LoopSearch = () => {
timer = setInterval(() => {
//查找新建导入数据是否成功
allApi?.getResultApi({ settlementTransferId: isCreateId })
.then((res) => {
//查询新建导入成功
if (res?.data?.finish) {
//清除轮询查询
clearInterval(timer);
//存在重複的結算轉賬編號
if (res?.data?.repeatedSettlementTransferDetailNo?.length > 0) {
//彈窗提示重複的編號
setIsTipsModal(true);
setRepeatDetail(res?.data);
} else {
//創建导入成功不存在重複,直接跳转到详情界面
history.push({
pathname: `/payMent/detail/${isCreateId}`,
});
}
}
})
.catch((e) => {
console.log(e);
//接口失敗停止輪詢
clearInterval(timer);
setIsCreating(false);
});
}, 2000);
};