如果出现页面错误,setTimeout会停止工作吗?

时间:2013-04-07 00:00:23

标签: javascript jquery ajax playframework

我正在使用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。我怎样才能做到这一点? 谢谢!

1 个答案:

答案 0 :(得分:1)

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

为了给出一个简单的答案,你会想到setInterval会解决你的问题。 setInterval可以提供(有些问题)重复,而不像执行一次的setTimeout

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