1

私はこのコードを持っています。

 var centerTimer = 0;
    function startCenterRefresh( refreshTime,position,params ) {
        centerTimer = setInterval(function() {
            jQuery.ajax({
                type: "POST",
                url: host+"/forms/refresh-center.php",
                beforeSend:function(){ stopCenterRefresh(); },
                success: function(){console.log(1);},
                complete:function(){startCenterRefresh(refreshTime,position,params);}
            });
        },refreshTime);
    }

    function stopCenterRefresh() {
        clearInterval( centerTimer );
    }

これは、ajaxリクエストのbeforeSendでsetIntervalを一時停止し、ajaxリクエストの完了後にsetIntervalを再開する適切な方法ですか?この処刑についての私の期待に応えたかどうかはわかりません。

あなたのアイデアは大いに感謝され、報われるでしょう。

ありがとう!

4

1 に答える 1

4

clearInterval関数への定期的な呼び出しを一時停止しません:それはそれを削除します。したがって、最初の呼び出しで完全に停止します。したがって、効果がありません。

おそらくあなたがすべきことはsetTimeout、成功コールバックでajax呼び出しを(使用して)単に再キューイングすることです。

例えば ​​:

var call = function() {
    $.ajax({ ... }).done(function(...){
       ...
       setTimeout(call, refreshTime);
    });
};
于 2012-11-30T09:16:27.753 に答える