web-dev-qa-db-ja.com

JS setTimeout()の代替

私が説明するように ここ 、私はもうwindow.setTimeout()を使用できず、clearIntervalなどのウィンドウの古典的な関数を使用できません...);しかし、JSブロックコードを非同期コードとして呼び出す必要があります。

そのため、XHRリクエストを使用しました。

XHRでwindow.setTimeout()のスマートな代替手段を実装するための最良の方法は何ですか?

// Not working :(
setTimeout(function(){ 
  document.getElementById("messageTimer").innerHTML = "Happy New Year ! (old version)";
}, 10);

// with or without jQuery - but XHR
jQuery.ajax({
    url: "/local/url/easy",
    success: function(html, textStatus, jqXHR) {
            // a loop ?
            // timeout done ?
            document.getElementById("messageTimer").innerHTML = "Happy New Year ! (working version)"
 }});

私のフィドルテスト: https://jsfiddle.net/mlefree/xzh3w2we/

Tks

7
Mat Cloud

jQueryバージョン3..animate() を使用してみてください。これは現在requestAnimationFrameを使用しています。

  // Creates a jQ object where elem set to index of [0]
  // a plain object with value of 0 `{to:0}`
  // call .animate() chained to the jQ object
  // Animates `{to:0}` value from 0 - 1
  // $({to:0}).animate({to:1}

var duration = 5000;
$({to:0}).animate({to:1}, duration, function() {
  // do stuff after `duration` elapsed
  $("#messageTimer").html("Happy New Year ! (working version)")
})
<script src="https://code.jquery.com/jquery-3.0.0-beta1.min.js"></script>
<div id="messageTimer"></div>
1
guest271314