json - 重复 jQuery JSON 请求,直到满足条件

标签 json jquery

我试图在 jQuery 中重复 JSON 请求来检查视频编码作业的状态,直到它完成。 “正在处理”将显示,直到作业完成,此时将显示视频。

每隔 x 秒检查一次以查看“状态”是否等于“完成”的循环是否是最佳解决方案?如果是这样,当工作完成时我如何摆脱这个循环?

作业正在进行时的 JSON 响应只不过是“处理”,完成后它将包含作业 ID、宽度和高度等内容。

如有任何帮助,我们将不胜感激,谢谢!

更新

感谢 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
    } 
}

关于json - 重复 jQuery JSON 请求,直到满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4999002/

相关文章:

Jquery 触发 Live 事件

jquery - 使用jquery在悬停时显示图像

javascript - 重复的 Ajax 调用以不同的方式解决 Deferred,如何解决?

javascript - 如何检查我的响应是字符串还是 JSON 对象?

javascript - JS如何将json转换为数组

json - 在 JsonSchema 中,格式值应设置为 "full-date"或 "date"?

c# - 期望来自命名空间 'root' 的元素 '' ..遇到名称为 'None' 的 '',命名空间为 ''

javascript - jquery 投票赞成反对,请求帮助

javascript - jQuery 事件。向他被召集的事件发送信息

javascript - 如何访问ag-grid表数据和详细信息的嵌套对象数组值?