Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每2秒观察一次响应状态,直到它';完成或失败_Javascript_Google Chrome_Xmlhttprequest - Fatal编程技术网

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

Javascript 每2秒观察一次响应状态,直到它';完成或失败,javascript,google-chrome,xmlhttprequest,Javascript,Google Chrome,Xmlhttprequest,我必须在一个网站上进行运行时测量,该网站将一个xhr数据包发布到后端,然后每隔2秒获取一个进度状态。 xhr响应主体具有状态字段,例如{status:“IN_PROGRESS”}{status:“IN_PROGRESS”}或{status:“FAILED”},{status:“STARTED”或{status:“COMPLETED”} 我的问题是:我如何编写一个脚本来监视正在初始化进程的状态包的xhr流量,然后监视状态xhr包的流量。如果状态为失败或完成,它应该停止并打印失败或完成。每2秒发送G

我必须在一个网站上进行运行时测量,该网站将一个xhr数据包发布到后端,然后每隔2秒获取一个进度状态。 xhr响应主体具有
状态
字段,例如
{status:“IN_PROGRESS”}{status:“IN_PROGRESS”}
{status:“FAILED”}
{status:“STARTED”
{status:“COMPLETED”}


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

每2秒发送
GET
请求,直到de>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();
    }
  }
}

是否只有一个Ajax请求?或者有多个Ajax请求?看起来您需要的是实时技术,如WebSocket、Comet等@shaochuancs开始时只有一个POST请求,然后每隔2秒就会有一个GET请求检查状态,直到完整或失败返回为状态