Javascript 如何处理;“随机HTTP获取”;错误

Javascript 如何处理;“随机HTTP获取”;错误,javascript,angularjs,http,get,http-get,Javascript,Angularjs,Http,Get,Http Get,我需要一个接一个地发送多个get请求(必需)。当计数为2-3时,它可以正常工作,但对于几乎6个HTTP Get请求,有时其中一些请求会失败并给出内部服务器错误(500)。在“新建”选项卡中打开“错误”链接将提供所需的结果 所以服务器端并没有什么问题 我在:localhost和production中都面临着这个问题。 如何从客户端处理这种情况 我试过: NodeJS+SocketIO无需请求即可从服务器发送数据。[如果套接字一直写入到60秒,那么会有如此多的数据。套接字从一开始就重新注册并重新启动

我需要一个接一个地发送多个get请求(必需)。当计数为2-3时,它可以正常工作,但对于几乎6个HTTP Get请求,有时其中一些请求会失败并给出
内部服务器错误(500)
。在“新建”选项卡中打开“错误”链接将提供所需的结果

所以服务器端并没有什么问题

我在:
localhost
production
中都面临着这个问题。 如何从客户端处理这种情况

我试过:

  • NodeJS+SocketIO
    无需请求即可从服务器发送数据。[如果套接字一直写入到60秒,那么会有如此多的数据。套接字从一开始就重新注册并重新启动。]
  • Angular+NGResource
    。[内部使用http get。问题仍然存在。]
  • 角度+重新角度库
    。[内部使用http get。问题仍然存在。]
  • 请建议我如何知道问题是什么。那只有我能想出一个解决办法


    Thnx

    这里有一个函数,您可以在其中包装HTTP调用。它将重复呼叫,直到通过。当心!如果HTTP调用在100%的时间内失败(例如,错误的URL),那么函数将不会停止(在测试中,函数被调用了>70000次。显然,承诺没有递归限制)。对于这种情况,我提供了一个有限版本的函数,它在n次尝试后停止

    var persistentRequest = function(requestFn) {
      var deferred = $q.defer();
      requestFn().then(function() {
        deferred.resolve();
      }, function() {
        persistentRequest(requestFn).then(
          function() {
            deferred.resolve();
          }
        );
      });
    
      return deferred.promise;
    }
    
    var persistentRequestLimited = function(requestFn, n) {
      var deferred = $q.defer();
      if (n <= 0) {
        deferred.reject('Did not complete in given number of tries');
      } else {
        requestFn().then(function(data) {
          deferred.resolve(data);
        }, function() {
          persistentRequestLimited(requestFn, n-1).then(
            function(data) {
              deferred.resolve(data);
            },
            function(rejection) {
              deferred.reject(rejection);
            }
          );
        });
      }
    
      return deferred.promise;
    }
    

    不要忘记将$q注入控制器/服务等。

    可能您的服务器不允许6个并发连接到同一个客户端…如果是这样的话。。。它决不允许这样。问题是:它有时工作,有时工作。失败,有时3失败…修复服务器。听起来好像坏了。服务器有问题吗?我不这么认为。线索是什么?答案似乎不错。我试过这样的东西。HTTP get出错时,我对请求进行了“n”次迭代。如果我能找到问题发生的原因,而不是找到解决方案,我会很高兴。你能帮我找到吗?你运行服务器吗?我同意Adam Batkin的观点,这听起来像是一个服务器问题,因为你可以重复请求,而且它可以工作。是的!我正在运行服务器。嗯,上面说:500(内部服务器错误),所以亚当的观点可能会触动神经。但我怎么知道什么坏了。细节:这是一个处理简单脚手架的rails服务器。
    persistentRequest(function() {
      return $http.get('/myurl');
    });
    
    persistentRequestLimited(function() {
      return $http.get('/myurl');
    }, 10);