0

iveはネット関数を取得しました:

            var timeout=60000;
    setInterval(function() {

        $.ajax({
          url: "/xheresfm/getstatus.php",
          data: {
          },
          success: function( data ) {
            var obj = jQuery.parseJSON(data);
            timeout=obj.refresh;
          }
        })
    }, timeout);
});

timeoit は常に 60000 ですが、obj.refresh は空の結果を返さないため、動作しないことがわかりません。

たとえば、obj.refresh が 9999999 の場合、タイムアウトは 60000 のままです

4

2 に答える 2

1

コードが機能しない理由は、非同期呼び出しを使用しているためであり、タイムアウト メソッドは AJAX 呼び出しの前に実行されます。以下のコードを使用してこれを克服できます。

var timeout=60000;

var func = function() {
        $.ajax({
          url: "/xheresfm/getstatus.php",
          data: {
          },
          success: function( data ) {
            var obj = jQuery.parseJSON(data);
            timeout=obj.refresh;

            setTimeout(func, timeout);
          }
        })
    }

func();

お役に立てれば。

于 2013-07-14T19:20:11.353 に答える
0

パフォーマンスに問題がある場合は interval cause を使用しないでください - 呼び出して呼び出し、呼び出し ... 呼び出し、ループ、loooop^^ - 良い考えではありません。私のアプローチについてどう思いますか?

var timeout = 60000;

var refreshStatus = function() {
        $.ajax({
          url: "/xheresfm/getstatus.php",
          success: function( data ) {
            var obj = jQuery.parseJSON(data);

            //do stuff on success
          },
          done: function () {
            setTimeout(function () {
               refreshStatus();
            }, timeout);

          }
        })
    }

refreshStatus();
于 2013-07-14T19:34:09.700 に答える