轮询:获取请求直到结果合适
Polling: Do Get-Request until result suits
我有以下代码:
$.get( "GetJobResult", { jobId: jobId }, function( answer ) {
})
如果"答案"不是"false",我想等待大约20秒,然后再次执行此请求,以检查它现在是否为"false"以外的内容。
我发现了很多类似的问题,但两个小时后我仍然不知道该怎么做。主要问题是20秒的"睡眠"。如果我不这样做,当答案出来时,如果围绕ajax调用调用函数,我会得到太多递归。
类似:
function doCall( jobId , test) {
if (test == "false") {
$.get( "GetJobResult", { jobId: jobId }, function( answer ) {
// how to wait here?
doCall( jobId, answer );
});
}
}
我有点困在这里了。有人能帮我吗?非常感谢!
编辑:我已经尝试过这样的setTimeout:
function doCall( jobId , test) {
if (test == "false") {
$.get( "GetJobResult", { jobId: jobId }, function( answer ) {
setTimeout(
doCall( jobId, answer ),
20000);
});
}
}
您研究过使用setTimeout吗?这就是在等待X毫秒后执行函数的方式。所以,如果你想等5秒,你可以这样做:
setTimeout(function(){ doCall( jobId, answer ); }, 5000)
5000就是5000毫秒。这有帮助吗?
Edit:为了澄清,setTimeout中的第一个参数必须是一个函数。所以另一种方法是:
setTimeout(doCall,5000)
但这里有个问题。setTimeout不知道您想要什么参数。相反,我们可以创建一个新函数,用正确的参数调用doCall:
var delayedCall = function(){
doCall(jobId,answer)
}
setTimeout(delayedCall,5000)
这应该有效,这与是一样的
setTimeout(function(){ doCall( jobId, answer ); }, 5000)
除了现在我们正在创建一个无名函数并同时传递它。
您可以使用console.time
(非标准)
console.time('someFunction');
someFunction(); // run whatever needs to be timed in between the statements
console.timeEnd('someFunction');
注意:传递给time()
和timeEnd()
方法的字符串必须匹配(使计时器按预期完成)。
如果是这样的问题,请告诉我:)
相关文章:
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- jQuery使用api获取typeform结果
- 在foreach中获取ajax结果
- 对象拟合:获取结果尺寸
- Mongodb$in以与数组中相同的顺序获取结果
- 从重复的javascript数组结果集中只获取一行
- 轮询:获取请求直到结果合适
- 获取在表单/文本字段中显示的结果
- 获取json结果的身份验证问题
- 将敲除绑定应用于模板,并将结果作为字符串获取
- 无法使用streams/highland.js从mongodb的结果中获取数据
- 如何将mysql查询的结果获取到html文本框中
- 获取结果未定义(主干.js)
- AngularJS:如何获取$http结果作为函数的返回值
- 无法从IE中的data.responseText获取结果,但在其他浏览器中工作
- Json 结果获取值
- 从动态创建的数据进行计算的结果获取 NaN
- JSON 字符串化结果获取特定键的值
- 如何在promise解析时手动将promise的结果获取到作用域变量中
- 根据搜索结果获取Flickr图片