Javascript 保持从HTTP调用读取数据
我正在开发一个web系统,但对Angular JS来说是个新手 我目前正在开发的功能需要使用Angular进行POST调用。这在英语中并不是很难做到。但我想继续从插座上读 我正在进行的通话需要很长时间,但我希望通话状态在我的Angular应用程序中可见。所以我想把状态数据发送回去,这在我的应用程序中是实时可见的 最好的方法是什么?我找到了Angular的WebSocket演示,但在这种情况下,我必须在WebSocket之上创建自己的HTTP实现,以便能够发送POST请求…..使用$HTTP服务的HTTP请求在后台进行,因此在实际发出请求时,您可以显示任何您想要的内容。要了解请求的状态,这取决于您希望如何度量该状态 $http对象上的进度事件不会添加到Angular中,因此,如果延迟与大文件上载有关,则可能需要创建一个服务来包装原始XMLHttpRequest对象,而不是使用$http。这里有一个例子 发件人: 例如,如果延迟是在服务器端等待长时间运行的数据库查询,您可能希望根据查询的平均运行时间伪造一个进度表,或者显示一个不确定的条:Javascript 保持从HTTP调用读取数据,javascript,angularjs,websocket,Javascript,Angularjs,Websocket,我正在开发一个web系统,但对Angular JS来说是个新手 我目前正在开发的功能需要使用Angular进行POST调用。这在英语中并不是很难做到。但我想继续从插座上读 我正在进行的通话需要很长时间,但我希望通话状态在我的Angular应用程序中可见。所以我想把状态数据发送回去,这在我的应用程序中是实时可见的 最好的方法是什么?我找到了Angular的WebSocket演示,但在这种情况下,我必须在WebSocket之上创建自己的HTTP实现,以便能够发送POST请求…..使用$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;
}
}