问候,
我试图在jQuery中重复JSON请求,以检查视频编码作业的状态,直到完成.将显示“处理”,直到作业完成,此时将显示视频.
一个循环,检查每x秒钟,看看“状态”是否等于“完成”,这是最好的解决方案?如果是这样,当工作完成时,我如何摆脱这个循环?
作业正在进行时的JSON响应将不过是“处理”,当它完成后,它将包含诸如作业ID,宽度和高度等内容.
任何帮助将不胜感激,谢谢!
UPDATE
以下是Felix的最终解决方案:
var checkStatus = function() { $.getJSON('json-data.PHP',function(data) { if (data.status != 'finished') { setTimeout(checkStatus,2000); } else { //Sample code to run when finished $("#statusText").text("Job Complete"); $("#dimensions").text(data.width + 'x' + data.height); } }); }; checkStatus();
解决方法
一个循环将不起作用,因为Ajax请求是异步的.
一种方法是进行相同类型的递归调用,并从成功回调(可能在一些超时之后)再次触发Ajax函数,如果条件不满足.
(伪代码):
function check_condition() { $.getJSON(<url>,function(result) { if(!result.finished) { setTimeout(check_condition,2000); } // do something else } }