21

(同様の質問/回答をすべて調べましたが、どれも私の問題を解決していません。)

コード:

var timeoutHandle;

function showLoader(show) {
    if (show) {
        $('.loader').html('Loading...');
        $('.loader').show();

        timeoutHandle = setTimeout(function () {
            if ($('.loader').is(':visible')) {
                $('.loader').html('Still loading...');
            }
        }, 15000);
    }
    else {
        $('.loader').hide();
        clearTimeout(timeoutHandle);
    }
}

AJAX 関数はshowLoader(true)、サーバーを呼び出す前に呼び出すだけshowLoader(false)で、結果の後に呼び出します。15 秒前にテキストが「読み込み中...」から「読み込み中...」に変わることがあるので、タイマー スレッドがまだ実行されているかのようです。上記のコードに何か問題がありますか?または、問題は他のコードにある可能性があります..

編集:showLoader(true)サーバーからの応答の前に、もう一度(そして何度も)呼び出すことができることを追加する必要があります

4

4 に答える 4

1

あなたの投稿では、最初に戻る前に showloader を複数回呼び出すことができると述べています。これはあなたの問題です。既存のハンドルを破棄せずに、既存の timeoutHandle を新しいもので上書きしています。新しいものを作成する前に、timeoutHandle が設定されているかどうかを確認する必要があります。

于 2013-06-28T15:42:06.653 に答える