创建服务以在控制器中重复功能

时间:2016-02-29 18:40:40

标签: javascript angularjs

我正在尝试编写一个模拟轮询功能的服务。我的代码如下:

app.service('poller', ['$timeout',

    function($timeout) {

        return ({
            poll
        })

        function poll(e) {
            $timeout(function() {
                poll(e);
            }, 5000);
        }
    }
]);

当我在控制器中注入它时,我尝试使用它:

poller.poll($scope.getNewMessages());

奇怪的是它只被召唤一次。此外,当我尝试在console.log(e)这样的服务中使用控制台日志时,我得到了未定义。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要将函数作为值传递给poller函数,并且需要调用函数:

app.service('poller', ['$timeout', function($timeout) {

        return ({
            poll
        });

        function poll(e) {
            e();
            $timeout(function() {
                poll(e);
            }, 5000);
        }
    }
]);

poller.poll($scope.getNewMessages);