3

我正在修复代码,但由于 javascript 的异步特性而面临问题。在给定的函数中

function submitQuery() {    
    disableButton();
    infoDisplay('DBQuery');
    enableButton()
}

disableButton()用于将图像更改为禁用以让用户知道功能已启动

infoDisplay()是另一个在服务器上承载某些功能的功能。而启用按钮用于恢复正常图标。

function disableButton() {
    idBRQuerySubmitBtn.src='images/Button/Disabled/Retransmit_Message_Search.gif';
    idQuerySubmitBtn.src='images/Button/Disabled/Database_Access_Search.gif';
    idQueryResetBtn.src='images/Button/Disabled/Reset.gif';
}

function enableButton() {
   alert('to check when it is fired');
   idBRQuerySubmitBtn.src='images/Button/Normal/Retransmit_Message_Search.gif';
   idQuerySubmitBtn.src='images/Button/Normal/Database_Access_Search.gif';
   idQueryResetBtn.src='images/Button/Normal/Reset.gif';
}

enableButton()是在 infoDisplay() 完成之前被解雇的。如何确保infoDisplay()在 enableButton 被触发之前执行。

4

2 回答 2

3

我建议你作为回调函数传入enableButtoninfoDisplay所以修改你的infoDisplay功能为

function infoDisplay(parameter, callback) {
    //Do something
    if (callback && typeof(callback) === "function") {
        callback();
    }
}

调用函数如

infoDisplay('DBQuery', enableButton);
于 2013-08-08T11:49:21.523 回答
0

您应该向 infoDisplay 添加回调功能,以便您可以将函数作为参数传递,这样 infoDisplay 可以在需要时调用传入的函数。

于 2013-08-08T11:50:36.833 回答