0

私のアプリケーションでは、10 秒ごとにこの ajax を呼び出して受信メール数をリロードします。
しかし、アプリケーションの同じページに何もしていないだけでも、時間の経過とともに PC が熱くなっているようです。

実行するたびに延長を 10 秒追加したいと思います。
その後、ページ全体が再度読み込まれると、0 にリセットされます。
出来ますか?

refresh_mail_count.js

jQuery(document).ready(function () {
    refreshMail();
});


function refreshMail() {
  $.ajax({
    url: "/messages/refresh_mail",
    type: "GET",
    dataType: "script",
  });
}

refresh_mail.js.erb

$('#message_count').html("<%= j(render(:partial => 'layouts/message_received_count', :object => @message_count)) %>");
setTimeout(refreshMail,10000);
4

2 に答える 2

2

ビューでグローバルjavascript変数を定義できます。window.timerCounter = 0次に、この変数をインクリメントしますrefresh_mail.js.erb

window.timerCounter += 1
setTimeout(refreshMail, 10000 + (window.timerCounter * 10000));
于 2013-02-06T12:46:38.813 に答える
0

setTimeoutをerbファイルからAJAX呼び出しの完全な関数に移動することは簡単にできます。結果は次のようになります。

var emailPollDelay, initialEmailPollDelay = 10000, 10000; jQuery(document).ready(function () { refreshMail(); });

function refreshMail() { $.ajax({ url: "/messages/refresh_mail", type: "GET", dataType: "script", complete: function() { setTimeout(refreshmail, (initialEmailPollDelay += emailPollDelay); } }); }

于 2013-02-06T12:51:49.530 に答える