如何处理 AngularJS 中 $http.post 的延迟
How to handle the delay in $http.post in AngularJS?
我正在使用$http.post
从服务器获取数据node.js
。我想处理延迟。
我已将超时添加为$http.defaults.timeout = 100;
,并期望console.log
错误的延迟,但它不起作用。
例:
$http.defaults.timeout = 100;
$http.post(url, data).success(function(result) {
callback(result);
}).error(function(error) {
console.log("error");
});
我是AngularJS
的新手.任何帮助都将不胜感激。
$timeout
返回承诺。$http.post
也回报了承诺。
所以我会使用$q.all
.文件
参考
$q.all([promise, …])
→ newPromise
一旦所有给定的承诺都得到,newPromise
就会解决已解决。
我们可以创建一些工厂(或者如果你想改变它,可以使用提供者):
.factory('delay', ['$q', '$timeout',
function($q, $timeout) {
return {
start: function() {
var deferred = $q.defer();
$timeout(deferred.resolve, 100);
return deferred.promise;
}
};
}
]);
现在在控制器中,我们可以写如下内容:
$q.all([delay.start(), $http.post(url, data)]).then(
function(results) {
// .....
}, function(error) {
// ....
});
因此,无论我们从$http.post
获得响应的速度有多快,只有当超时停止时,您才会得到响应
AngularJS $http接受超时作为请求参数之一(更多 这里)
请看这篇文章,它解释了如何实现超时功能:
$http.post(url, { timeout: 100 })
.success(success)
.error(error);
成功函数和错误函数接受几个参数:function(data, status, headers, config)
。当您收到超时错误时,将执行错误处理程序,其状态将为0
。
我希望这会有所帮助。
检查这个:
angular.module('MyApp', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.timeout = 5000;
}]);
相关文章:
- 如何绑定“;这个“;在$http.post中->在AngularJS中解析/拒绝?(现在this=Window对象
- 为什么我的$http.post返回一个400错误
- AngularJS$http.post调用返回502(坏网关)错误
- AngularJS$http.post没有'不适用于Chrome,仅适用于IE
- 如何将多个onError函数分配给promise(由angular's$http.post返回)
- 如何将AJAX POST转换为HTTP POST,以便在单击时发布
- $http.post undefined 不是函数
- 在Selenium IDE中执行HTTP POST
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- $http.post() angularjs 响应函数未按正确的顺序执行
- 索引未在 $http.post 查询中获取正确的值
- 在javascript中获取 http.post,然后发送响应
- Angular无法读取http post响应中的cookie
- Angular 2:实现HTTP POST请求
- Angular 2:HTTP Post Request,带有URL参数和正文类型参数
- angular.js$http.post将数据发送到Rails4
- Angular$http.post未到达服务器
- $timeout包装$http.post返回undefined而不是promise
- HTTP Post请求json数据更改
- 在Http Post上添加授权标头