每2秒观察一次响应状态,直到它完成或失败

时间:2017-06-27 10:12:15

标签: javascript google-chrome xmlhttprequest

我必须在网站上进行运行时测量,将xhr数据包发送到后端,然后每2秒获取一次关于进度的状态。 xhr响应正文具有status字段,例如{status: "IN_PROGRESS"} {status:"IN_PROGRESS"}{status:"FAILED"}{status:"STARTED"{status:"COMPLETED"}

我的问题是:我如何编写一个脚本来监视正在初始化该进程的status包的xhr流量,然后观察状态xhr包的流量。如果状态失败或已完成,则应停止并打印失败或完成。

1 个答案:

答案 0 :(得分:1)

要每{2}发送GET请求,直到COMPLETEDFAILED返回,您可以将所有XHR对象存储到一个池中。状态为COMPLETEDFAILED后,停止每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();
    }
  }
}