0

JavaScript の要件に問題があります。setIntervalを使用して、1500ミリ秒ごとに永続的にスクリプトを呼び出すhtmlがあります。

 var t = setInterval(loadData(),1500);

loadData 関数は、JSON をリストとして返すスクリプトを呼び出します。私がやりたいことは、固定間隔から可変間隔に変更することです。たとえば、スクリプトの 2 回の呼び出しの間に変更がない場合は、間隔に別の値を設定する必要があります。jquery linq を使用して、最初のリストの長さと更新時のリストの長さを比較して時間の値を変更できると聞きました。また、count の値を Cookie に保存して、常に比較できるとも聞きました。

何かアイデアはありますか?私は感謝されます。前もって感謝します。

4

2 に答える 2

2

私はあなたがやろうとしていると思います:

var speed = 1500,
    t = setInterval(loadData, speed);

function loadData() {
    if (something == true) {
        something = false;
        speed = 3000;
        clearInterval(t);
        t = setInterval(loadData, speed);
    }else{
        //do something
    }
}

関数を参照するだけで、括弧を追加すると関数がすぐに実行されます。速度に変数を使用する場合、速度を変更するには、間隔関数をクリアして再度実行する必要があります。

于 2013-02-04T12:51:56.717 に答える
2

間隔が可変の場合、setInterval を使用することはできません。この期間は、最初の呼び出し後に変更されません。setTimeout を使用して期間を変更できます。

var period=1500
var timer;
var callback = function() {
    loadData();
    timer = setTimeout( callback, period )
};

var changePeriod = function( newPeriod ) {
    period = newPeriod;
}

//first call
callback();

ここで、後で期間を変更するには、changePeriod( ms ) を呼び出すだけです。

于 2013-02-04T12:57:38.900 に答える