Javascript在等待GET完成时setInterval
Javascript setInterval while waiting for a GET to complete
嗨,我正在尝试刷新页面中的文本,该页面通知服务器端计算的状态,而它们正在完成。计算从get请求开始,并且刷新必须仅在get未完成时发生。我试图通过在setInterval中获取服务器上的文本文件的内容并在GET完成后关闭该设置间隔来做到这一点。我的问题是,当我看看发生了什么,我只看到一个请求的文本文件,在开始,然后什么都没有。我希望在代码中每隔200毫秒看到一个请求。我附上js代码,并提前感谢你。通过onclick启动的函数是disps(name);
function instant(nn) {
$.get("./track.txt", function (data) {
$('[name|="' + nn + '"]').html('');
$('[name|="' + nn + '"]').html(data);
/*$('[name|="'+ nn +'"]').first().html('');
$('[name|="'+ nn +'"]').first().append('<img src="loading.gif">');*/
});
}
function disps(nn) {
aa = $('[name|=input_data]').val();
/* $('[name|="'+ nn +'"]').html('');
$('[name|="'+ nn +'"]').html('Analysed');
$('[name|="'+ nn +'"]').first().html('');
$('[name|="'+ nn +'"]').first().append('<img src="loading.gif">'); */
var refreshId = setInterval(instant(nn), 200);
$.get("./loop.php?query=" + aa, function (data) {
/* $('[name|="'+ nn +'"]').find('img').remove().end(); */
instant2(nn, refreshId);
$('[name|="' + nn + '"]').first().append(data);
});
}
function instant2(nn, refreshIntervalId) {
clearInterval(refreshIntervalId);
$('[name|="' + nn + '"]').html('');
$('[name|="' + nn + '"]').first().html('');
}
setInterval(instant(nn)
立即调用instant(nn)
,就像任何其他函数调用一样。
然后它将返回值传递给setInterval()
,就像任何其他函数调用一样。
那不是你想要做的。
相反,你想传递一个调用instant()
的函数:
function() { instant(nn); }
激活函数并将结果值传递给setinterval的典型错误,而不是传递函数本身。
因为你想传递一个参数给函数,而setInterval不会为你这样做,你需要一个闭包——这很容易做到——将instant
封装在一个匿名函数中:
setInteval(function() { instant(nn); }, 200);
相关文章:
- 如何在自动完成时设置属性标题
- Adobe Edge:动画完成时添加onComplete处理程序
- 当一些事情可以通过JS或CSS完成时,我应该选择哪种方式
- 当send_data完成时,Rails send_data和Javascript处理程序
- 如何在uploadify/uploadifive中使用OnQueueComplete事件在队列完成时发送电子邮件
- 在操作完成时执行函数
- JQuery AJAX 在 GET 请求完成时返回 XML
- fadeIn仅在未显示且fadeOut完成时显示
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- javascript:setInterval执行时不停止
- 当所有表单字段都完成时,jquery将图像添加到列表项中一次
- 当用户名和传递请求通过ajax完成时,我如何重定向页面
- 当视频停止或播放完成时,谷歌SWFObject javascript检测
- Javascript:对象在自动完成时应出现错误
- Jquery 将内容加载到 ajax 容器中,并在完全完成时发出警报
- Ext.Ajax.isLoading 在并非所有请求都完成时返回 false
- Dojo 两个 XHR 请求和回调函数仅在两者完成时触发
- 当ExecuteScript(setInterval)完成时,继续“while”循环
- 我想调用setinterval,当setinterval完成时,改变页面
- Javascript在等待GET完成时setInterval