1

jqueryテンプレート項目が更新されるページを更新するためにsetTimeoutを使用しています。関連するコードは次のとおりです。

<script type="text/javascript"> 
         var results = JSON.parse('@svgPath'.replace(/&quot;/g,'"'));  

           window.onload = setupRefresh;

           function setupRefresh() {
             setTimeout("refreshPage();", 300); // milliseconds
            }
          function refreshPage() {

            $("#resultTemplate").tmpl(results, {
                checkLink : function(key) {
                 var linkRes = this.data[key];
                 checkFile(linkRes, callbackFunc); 
                 alert("refreshed?");
                return window.myRet;
                 }
            }).appendTo("#resultList" ); 
            }
    </script>

Jquery テンプレート:

<script id="resultTemplate" type="text/x-jquery-tmpl"> 
        <li> 
            {{if  $item.checkLink("link") == 1}}
                  <a href = ${link}>${type}</a> 
            {{else}}
            ${type}
            {{/if}} 
        </li> 
    </script>

アプリを実行すると、リンクが利用できない場合 (ajax 関数checkFile(linkRes, callbackFunc);が 404 not found エラーを引き起こす可能性がある場合)、タイマーが停止しているように見えますrefreshPage。どうすればこれを達成できますか?ありがとう!

4

1 に答える 1

1

紛らわしい非同期コードと同期コード。ajax の onSuccess および onFailure イベントの最後に setTimeout をアタッチする必要があります。書かれているように、AJAX呼び出しがリクエストのステータスを返すと仮定しています。ただし、非同期であるため、サーバーから何かを受け取る前に戻ります。

どの機能が時間の経過とともに繰り返されるかについて簡単な答えを出すために、あなたはそれsetIntervalがあなたの問題を解決すると考えていました. 一度実行されるものsetIntervalとは異なり、(やや問題のある)繰り返しを提供できます。setTimeout

setTimeoutここでも、AJAX コールバック内からの継続として使用するコードでパターンを確立する必要があります。

于 2013-04-07T00:12:16.603 に答える