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() が完了する前に発生しています。enableButton が起動される前に確実に実行されるようにする方法。infoDisplay()

4

2 に答える 2

3

コールバック関数として渡すことenableButtonをお勧めします。infoDisplayしたがって、infoDisplay関数を次のように変更します

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

のような呼び出し関数

infoDisplay('DBQuery', enableButton);
于 2013-08-08T11:49:21.523 に答える