我正在使用setTimeout刷新页面,其中将更新jquery模板项。相关代码如下:
<script type="text/javascript">
var results = JSON.parse('@svgPath'.replace(/"/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
。我怎样才能做到这一点?
谢谢!
答案 0 :(得分:1)
令人困惑的异步代码和同步代码。您应该将setTimeout附加到ajax的onSuccess和onFailure事件的末尾。正如所写,假设AJAX调用将返回请求的状态。但是,异步它会在之前返回,它会从服务器接收任何内容。
为了给出一个简单的答案,你会想到setInterval
会解决你的问题。 setInterval
可以提供(有些问题)重复,而不像执行一次的setTimeout
。
您需要在代码中建立一个模式,该模式将使用setTimeout
作为AJAX回调中的延续。