1

我正在使用 setTimeout 刷新页面,其中 jquery 模板项将被更新。相关代码如下:

<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未找到错误,那么计时器似乎停止了。但是我希望计时器继续执行,即refreshPage继续被调用。我怎样才能做到这一点?谢谢!

4

1 回答 1

1

您令人困惑的异步代码和同步代码。您应该将 setTimeout 附加到 ajax 的 onSuccess 和 onFailure 事件的末尾。如您所写,假设 AJAX 调用将返回请求的状态。但是,由于是异步的,它将在从服务器接收到任何内容之前返回。

要给出一个简单的答案,即随着时间的推移会重复什么功能,您认为这setInterval可以解决您的问题。与执行一次不同,setInterval可以提供(有些问题)重复。setTimeout

同样,您需要在代码中建立一个模式,该模式将setTimeout用作 AJAX 回调中的延续。

于 2013-04-07T00:12:16.603 回答