2

私はajax呼び出しを行い、次にgifをロードしてテレビに静的に表示するWebサイトを持っています。しかし、現時点では、ajax呼び出しは、エフェクトが実際にポップするのに十分な時間はかかりません。それで、ajax呼び出しにかかる最小時間を設定する方法があるかどうか疑問に思いましたか?

あなたは私が何をしているのかをよりよく理解するために私が作ろうとしているウェブサイトを見ることができます。右の額縁またはテーブルの蓄音機をクリックしてみてください。

    <script type="text/javascript">
    var minDelay = 1000;
    var start = new Date();
    $.get("form.html", function(result) {
        callback($(result).find("#contact"));
        var end = new Date();
        var timeInMilliseconds = end - start;
        if (timeInMilliseconds  < minDelay) {
            setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds );
        }
        else callback(result);
    });
    $.get("music.html", function(result) {
        callback($(result).find("#music"));
        var end = new Date();
        var timeInMilliseconds = end - start;
        if (timeInMilliseconds  < minDelay) {
            setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds );
        }
        else callback(result);
    });


    function callback(result) {
        $("#screen").html(result);
    }
</script>
4

2 に答える 2

6

開始点と終了点の時間を計り、それが特定のしきい値を下回っている場合は、別の遅延を追加できます(を使用setTimeout)。このようなもの:

var minDelay = 1000;
var start = new Date();
$.get(url, function(result) {
    var end = new Date();
    var timeInMilliseconds = end - start;
    if (timeInMilliseconds  < minDelay) {
        setTimeout(function() { callback(result); }, minDelay - timeInMilliseconds });
    }
    else callback(result);
});

function callback(result) {
    // Ajax response handling here ...
}

編集JQueryを使用してこれを達成できるかどうかはわかりませんloadドキュメントによると、サーバーから応答を受信した直後にターゲットが更新されます)。load呼び出しをに変換することをお勧めしgetsます。つまり、これ:

$("#screen").load("form.html #contact");

これになるはずです:

$.get("form.html", function(result) {
    callback($(result).find("#contact"));
});

そして、callback上記で作成した関数は、のターゲットにデータを入力する必要がありloadます。

 function callback(html) {
     $("#screen").html(html);
 }
于 2012-10-18T20:20:25.227 に答える
1

setTimeout()ajaxコールバックメソッドのメソッドを使用して遅延をシミュレートできますか?かなりクールなウェブサイトところで!

サンプルコード:

var minDelay = 500;//half a second
setTimeout(DelayTimePassed, minDelay);
//make Ajax Call

function DelayTimePassed()
{
if(dataAvailable)
//show Data
else
//show data as soon as available
}

function AjaxCallback()
{
if(showDataAsSoonAsAvailable)
//Show Data Now
else
dataAvailable=true;//show data after time delay passes
}

それがあなたにとって理にかなっていることを願っています-2つの方法は、データをいつ表示するかを決定するために、いくつかのグローバルブール変数をチェックします。

于 2012-10-18T20:19:23.213 に答える