如何为每个按钮请求设置每个HTTP get的延迟超时

时间:2017-05-21 14:57:34

标签: angularjs http timeout delay

我有一个从database.php获取数据的按钮。我试图在http.get没有响应之前添加超时延迟,所以我不能使用promise。在php中,使用sleep()非常容易。至于原因,它是模拟延迟的另一个项目的一部分(我知道你可以通过其他方式来做)。

app.controller('mainController', function ($scope, $http, $timeout) {
     $scope.requestData = function () {
        $scope.delta = '[waiting]';
        //Delay here!
        $http.get('database.php').then(function (response) {
            $scope.rows = response.data.records;
    };
});

我尝试过,无效

app.controller('mainController', function ($scope, $http, $timeout) {
     $scope.requestData = function () {
        $scope.delta = '[waiting]';
        $http.get('database.php',{ timeout: 3000 }).then(function (response) {
            $scope.rows = response.data.records;
    };
});

我试过传递一个空计时器,无法正常工作

app.controller('mainController', function ($scope, $http, $timeout) {
    var timer = function () {
    }

    $scope.requestData = function () {
        $scope.delta = '[waiting]';
        $timeout(timer, 3000);
        $http.get('database.php').then(function (response) {
            $scope.rows = response.data.records;
    };
});

任何想法,我能做什么?

1 个答案:

答案 0 :(得分:2)

您需要将要延迟的功能传递给超时功能,如此

app.controller('mainController', function ($scope, $http, $timeout) {
     $scope.requestData = function () {
        $scope.delta = '[waiting]';
        //Delay here!
        $timeout(function () {
            $http.get('database.php').then(function (response) {
                 $scope.rows = response.data.records;
            });
        }, 2000)
    };
});