问题简单描述:
1.执行DWR方法前想在界面上显示一句话“执行中……”。
2.执行DWR方法取数据。
3.执行完后显示结果。
但实际情况是,在执行完前不会显示“执行中……”这句话。checkdata 为 dwr 对象,代码如下function checkAll(){
    //将DWR设置为同步
    DWREngine.setAsync(false); 
    checkMaxDate(101);    
    checkMaxMonth(101);
    checkMaxMonth(102);
    //重新设置为异步方式        
    DWREngine.setAsync(true);
}
function checkMaxDate(type){
    var td = jQuery("#maxDate"+type);
    td.empty().css("color","#000").append(showImg());
    checkdata.checkMaxDate(type,function(data){
        var flag = data.split("_")[0];
        var msg = data.split("_")[1];
        if(flag=="wrong"){
            td.css("color","red");
        }
        td.empty().append(msg);
    });
}
function checkMaxMonth(type){
    var td = jQuery("#maxMonth"+type);
    td.empty().css("color","#000").append(showImg());
    checkdata.checkMaxMonth(type,function(data){
        var flag = data.split("_")[0];
        var msg = data.split("_")[1];
        if(flag=="wrong"){
            td.css("color","red");
        }
        td.empty().append(msg);
    });
}
function showImg(){
    var msg = "正在检测中……";
    msg += "<img src='${pageScope.context}/images/check/loading.gif'/>"
        
    return msg;
}假设 checkMaxDate() 需要执行30秒,checkMaxMonth() 需要执行15秒。
现在的结果是:1分钟后显示结果,而不显示“正在检测中……”这样的文字。需要的效果是 按下按钮执行checkAll();方法时显示“正在检测中……”这样的文字,然后30秒后显示checkMaxDate() 的结果,然后15秒后显示第一个checkMaxMonth() ,再15秒后显示第二个checkMaxMonth()的结果。这些DWR方法里面执行的是一些SQL,看表格数据量的大小,即使没有15秒也是有10秒。不存在一闪而过的情况。
实际上我是有一列下来10几个方法,然后它是所有都执行完需要1分多钟,然后1分多钟后同时显示所有结果。我想要的效果是一个方法执行完后显示结果,然后执行下一个。
就像360安全卫士检测时检测完毕一个就输出一个结果的情况。