如何用angularjs模拟一个长任务?

时间:2015-01-22 12:29:45

标签: angularjs

我是AngularJS的新手。我正在测试解决方案,以便仅在收到服务器的响应后显示部分视图(这是一种好方法吗?)。

为了更好地解决解析如何工作,我想在服务中添加一个暂停(5秒),它使用$ resource来获取部分视图显示的数据。在Java中我会使用方法sleep。在执行以下代码行之前(在我的服务中使用$ resource之前),是否有一种简单的方法可以使用AngularJS等待5秒?

2 个答案:

答案 0 :(得分:1)

这样的事情会等待:

function ExampleController($scope, $timeout, $q) {

    function get() {

        var request = $q.defer();

        console.log('Waiting...');

        $timeout(function() {
            request.resolve({data:1});
        }, 5000);

        return request.promise;
    }

    get().then(function(response) {
        console.log(response.data);
    });
}

基本上你设置了一个$q.defer(),然后在你想要的所有内容被加载时解析它(或者在超时完成的情况下)。然后使用then函数对您解析的数据执行某些操作。

答案 1 :(得分:0)

像这样创建一个工厂:

function fakeResource($q, $timeout) {
    return {
        get: function() {

            var request = $q.defer();

            $timeout(function() {
                request.resolve({data:1});
            }, 5000);

            return request.promise;
        }
    }
}]);

app.factory('fakeResource', fakeResource);

然后在$ routeProvider的解析中:

customers: function(fakeResource) {
    return fakeResource.get();
}