如何处理 AngularJS 中 $http.post 的延迟

How to handle the delay in $http.post in AngularJS?

本文关键字:http post 延迟 AngularJS 何处理 处理      更新时间:2023-09-26

我正在使用$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;
}]);