我正在修复代码,但由于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()
。
答案 0 :(得分:3)
我建议你在enableButton
中传递infoDisplay
作为回调函数。因此,将infoDisplay
功能修改为
function infoDisplay(parameter, callback) {
//Do something
if (callback && typeof(callback) === "function") {
callback();
}
}
调用函数如
infoDisplay('DBQuery', enableButton);
答案 1 :(得分:0)
您应该为infoDisplay添加一个回调功能,这样您就可以将一个函数作为参数传递,这样infoDisplay可以在需要时调用传入的函数。