我必须在网站上进行运行时测量,将xhr数据包发送到后端,然后每2秒获取一次关于进度的状态。
xhr响应正文具有status
字段,例如{status: "IN_PROGRESS"} {status:"IN_PROGRESS"}
或{status:"FAILED"}
,{status:"STARTED"
或{status:"COMPLETED"}
。
我的问题是:我如何编写一个脚本来监视正在初始化该进程的status
包的xhr流量,然后观察状态xhr包的流量。如果状态失败或已完成,则应停止并打印失败或完成。
答案 0 :(得分:1)
要每{2}发送GET
请求,直到COMPLETED
或FAILED
返回,您可以将所有XHR对象存储到一个池中。状态为COMPLETED
或FAILED
后,停止每2秒计时器并中止池中的所有XHR对象。
以下是使用jQuery的示例:
$.ajax({
type: "POST",
url: "/test",
data: "test data"
});
var xhrPool = [];
var timer = setInterval(function() {
var xhr = $.ajax({
type: "GET",
url: "/test-result",
success: function(data) {
console.log(data);
if (data.status === 'COMPLETED' || data.status === 'FAILED') {
handleResponse(data);
}
}
});
xhrPool.push(xhr);
}, 2000);
function handleResponse(data) {
clearInterval(timer);
for (var i in xhrPool) {
if (xhrPool[i].readyState !== 4) {
xhrPool[i].abort();
}
}
}