为什么setInterval 只执行了一次??
代码如下
<script language=javascript>
$(function () {
var test = {
deg: function (type) {
alert(type);
}
}
setInterval(test.deg(12), 1000);
});
</script>
解决办法:
setInterval(function () { test.deg(12)}, 1000);这样就可以了。
当然实现这种轮询的另一种思路是,使用递归,然后设置一个休眠时间。
当条件达到临界值时,取消
window.clearInterval(clock);
代码:
var url = 'rest/services/Tools/submitJob'; var clock=null; ajaxfunc(url, 'POST', restData, function (res) { //运行分析 console.log(res.jobId); var jobId = res.jobId; //var url = adminURL + "rest/services/Tools/jobs/" + jobId; //location.href = url; clock = window.setInterval(function () { result(jobId)}, 5000); }); var result = function(jobId) { var url = adminURL + "rest/services/Tools/jobs/" + jobId; $.ajax({ type: "POST", url: url, dataType: 'json', data: { f: 'json', token: token }, success: function (data) { var jobStatus = data.jobStatus; if(jobStatus =='esriJobSucceeded'){ var output = url + '/results/output'; var resultOutput; $.ajax({ type: "POST", url: output, dataType: 'json', data: { f: 'json', token: token }, success: function (data) { resultOutput = data.value.url; alert(resultOutput) window.clearInterval(clock); }, error:function(){ alert("error") window.clearInterval(clock); } }); } if(jobStatus =='esriJobFailed'){ alert("esriJobFailed") window.clearInterval(clock); } }, error: function () { alert("error") window.clearInterval(clock); } }); };