Angularjs处理api超时

时间:2015-03-22 07:57:39

标签: jquery angularjs

当api在30秒内没有响应时,我需要抛出错误。

$http.get("api/data.json",{timeout : 3000}).success(function(data){
            $scope.data = data;
        }).error(function(data) {
            console.log('api didnt respond in 30 seconds')
        });

但即使在30秒后它也不会出现在错误块中。 我是angularjs的新手。请指导我。

1 个答案:

答案 0 :(得分:1)

您需要将承诺传递给$ http超时属性:

    app.controller('ctrl', function ($http, $timeout) {
        $http({
            method: 'GET',
            url: 'api/data.json',
            timeout: $timeout(function () { alert('request timed out'); }, 3000)
        }).success(function (data) {
            alert('request successful');
        });
    });