如何回调给定的函数

时间:2013-08-08 11:44:24

标签: javascript html javascript-events

我正在修复代码,但由于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()完成之前被解雇了。如何确保在触发enableButton之前执行 infoDisplay()

2 个答案:

答案 0 :(得分:3)

我建议你在enableButton中传递infoDisplay作为回调函数。因此,将infoDisplay功能修改为

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

调用函数如

infoDisplay('DBQuery', enableButton);

答案 1 :(得分:0)

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