我有一个愚蠢的页面,其中链接将触发长时间运行任务的POST请求。因此页面必须轮询另一个端点的状态。这是实际的代码:
<script type=text/javascript>
function check_status(id) {
alert(id)
}
$(function() {
$("a#save_preview").bind('click', function() {
$.post($SCRIPT_ROOT + "/api/v1.0/creatives/" +
$("img#preview").attr("creative_id"),
{}, function(data, status) {
alert(status);
setTimeout(check_status(100), 8000);
}, "json");
});
});
因此,应在POST请求成功后8秒调用存根检查状态。但是,每当我运行此代码时,都会在之后调用它。我做错了什么?
答案 0 :(得分:3)
如果您需要支持string strRev = string.Join("", str.Reverse()).Replace('<', '>');
以下的Internet Explorer 10,则行setTimeout(check_status(100), 8000);
应该是setTimeout(check_status, 8000, 100);
或者可能使用匿名函数。
答案 1 :(得分:1)
您必须向setTimeout
方法提供回调函数,但不是提供它,而是直接调用它check_status(100)
,因此在超时后实际上没有调用任何内容。你可以这样改变:
setTimeout(function() {
check_status(100)
}, 8000);
答案 2 :(得分:0)
尝试在setTimeout中设置一个函数 以下代码适用于您的情况
<script type=text/javascript>
function check_status(id) {
alert(id)
}
$(function() {
$("a#save_preview").bind('click', function() {
$.post($SCRIPT_ROOT + "/api/v1.0/creatives/" +
$("img#preview").attr("creative_id"),
{}, function(data, status) {
alert(status);
setTimeout(function(){check_status(100);}, 8000);
}, "json");
});
});