dwr的回调函数的执行默认是异步的,即在调用dwr函数以后,如果后面还有js语句,会立刻执行其后的js语句,不会等待dwr函数的回调函数执行完后才去执行其后的js语句。
现在,我们可以通过设置dwr让其同步执行,即做完回调函数以后,再继续执行其后的js。
同步执行设置语句:
dwr.engine.setAsync(false);
用完某个调用以后,最好还是返回原来的异步执行:
dwr.engine.setAsync(false);
例子:
function check(id,index){
...............................
if(masterConfId == ""){
var confID = document.getElementById("confID").value;
dwr.engine.setAsync(false);
McuHelpDwrMethod.getCasList(idipArray[0],confID,callback);
dwr.engine.setAsync(true); // 执行完回调函数以后,才开始执行这句话
//执行完dwr回调函数以后,才开始执行这句话.
dwr.util.addOptions('setScreenOneSec'+indexs, data4, "id", "name");
..............
}
function callback(lst){
dwr.util.addOptions('setScreenOneSec'+indexs, data3, "id", "name");
dwr.util.addOptions('setScreenOneSec'+indexs, data5, "id", "name");
dwr.util.addOptions('setScreenOneSec'+indexs, lst, 'mcu_participant_id', 'mcu_participant_name');
}