Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 保持从HTTP调用读取数据_Javascript_Angularjs_Websocket - Fatal编程技术网

Javascript 保持从HTTP调用读取数据

Javascript 保持从HTTP调用读取数据,javascript,angularjs,websocket,Javascript,Angularjs,Websocket,我正在开发一个web系统,但对Angular JS来说是个新手 我目前正在开发的功能需要使用Angular进行POST调用。这在英语中并不是很难做到。但我想继续从插座上读 我正在进行的通话需要很长时间,但我希望通话状态在我的Angular应用程序中可见。所以我想把状态数据发送回去,这在我的应用程序中是实时可见的 最好的方法是什么?我找到了Angular的WebSocket演示,但在这种情况下,我必须在WebSocket之上创建自己的HTTP实现,以便能够发送POST请求…..使用$HTTP服务的

我正在开发一个web系统,但对Angular JS来说是个新手

我目前正在开发的功能需要使用Angular进行POST调用。这在英语中并不是很难做到。但我想继续从插座上读

我正在进行的通话需要很长时间,但我希望通话状态在我的Angular应用程序中可见。所以我想把状态数据发送回去,这在我的应用程序中是实时可见的

最好的方法是什么?我找到了Angular的WebSocket演示,但在这种情况下,我必须在WebSocket之上创建自己的HTTP实现,以便能够发送POST请求…..

使用$HTTP服务的HTTP请求在后台进行,因此在实际发出请求时,您可以显示任何您想要的内容。要了解请求的状态,这取决于您希望如何度量该状态

$http对象上的进度事件不会添加到Angular中,因此,如果延迟与大文件上载有关,则可能需要创建一个服务来包装原始XMLHttpRequest对象,而不是使用$http。这里有一个例子 发件人:

例如,如果延迟是在服务器端等待长时间运行的数据库查询,您可能希望根据查询的平均运行时间伪造一个进度表,或者显示一个不确定的条:


听起来你似乎有办法在服务器端监控进度。在这种情况下,您可以在第一个请求正在进行时发出另一个请求,以获取进度信息。您可能需要发送一些状态,如查询ID或请求ID来关联这两个请求

您可以使用拦截器。无论何时进行http调用,都会在发送之前和从服务器返回之后拦截调用

XHRCallToTheRestService()
   .then(function(result){
      //Hide status bar, data is back
    });

readMyStatus()
 .then(function(status){
     if(status == "finished"){
        //Do nothing
     } else{
        readMyStatus();
     }
  });
$httpProvider.interceptors.push(['$q', '$location', 'localStorageService', function ($q, $location, localStorageService) {
        return {
            request: function (config) {
                // You can do some stuff here

                return config;
            },

            response: function (result) {
                return result;
            },

            responseError: function (rejection) {
                console.log('Failed with', rejection.status, 'status');


                return $q.reject(rejection);
            }
        }
    }]);

或者您可以使用

您可以使用$HTTP创建自定义服务来执行如下POST请求:

site.factory('customService', ['$http', function($http){
     var httpProto = {
         success : function(response, status, headers, config) {
            return response;
         },
         error :  function(error, status, headers, config) {
            return error;
         }
      };

      thePostRequest: function(dataRequest){
         var output = $http.post(
               'http://74.125.224.72/',
                dataRequest
         );

         output.prototype = httpProto;
         return output;
      }
}

对于web套接字,一位朋友向我介绍了socket.io,我在几个SPA中成功地将它们用于Angular。查看更多信息


G00d 1uck.

虽然这个答案可能是正确和有用的,但如果您想解释它如何帮助解决问题,则最好解释一下。如果有一个可能不相关的变化导致它停止工作,并且读者需要了解它曾经是如何工作的,那么这在将来变得特别有用。
site.factory('customService', ['$http', function($http){
     var httpProto = {
         success : function(response, status, headers, config) {
            return response;
         },
         error :  function(error, status, headers, config) {
            return error;
         }
      };

      thePostRequest: function(dataRequest){
         var output = $http.post(
               'http://74.125.224.72/',
                dataRequest
         );

         output.prototype = httpProto;
         return output;
      }
}