逻辑:前端向后台发送一个请求 这个请求在mq中(后台拿到消息后,会把消息id和处理结果保存到本地),后台收到mq时 直接去请求某个网页的数据 (如果请求成功 把数据保存到数据库 并把更新该条消息的处理结果)的同时 异步把消息id返回前端 前端拿到返回结果后 用消息id在规定的时间内循环调取后台保存的消息结果 如果成功则返回成功 失败则返回失败结果
需求:前端控制周期调取 然后处理结果
不废话 代码如下:
var timer = setInterval(function () {
app.__syncAjax(taskServiceName, 'getTaskByTaskId', {
"taskId": msgId
}).then(function (data) {
if (!!data) {
var status = data.status;
if("04" == status){
clearInterval(timer);
$('#loadingImg').hide();
$('.wait-img').hide();
$.dialog.alert('同步税局税(费)种信息成功!');
}
if("02" == status || "05" == status){
var resMsg = data.resMsg;
var RtnMsg = JSON.parse(resMsg).RtnMsg;
clearInterval(timer);
$('#loadingImg').hide();
$('.wait-img').hide();
$.dialog.alert(RtnMsg);
}
}
});
}, 5000);
setTimeout(function () {
clearInterval(timer);
$('#loadingImg').hide();
$('.wait-img').hide();
}, 30000);
说一下setInterval()方法:就是html中指定的周期(以毫秒计)来调用函数或计算表达式,直到 clearInterval() 被调用或窗口被关闭。
用法: setInterval(code,time)
code:要调用的函数或要执行的代码串;
time:周期性执行或调用 code 之间的时间间隔,以毫秒计;
然后就可以了!