javascript - 创建一个服务来重复 Controller 中的功能

标签 javascript angularjs

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

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

    function($timeout) {

        return ({
            poll
        })

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

当我将它注入(inject) Controller 时,我尝试像这样使用它:

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

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

最佳答案

您需要将函数作为值传递给轮询器函数,并且需要调用该函数:

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

        return ({
            poll
        });

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

poller.poll($scope.getNewMessages);

关于javascript - 创建一个服务来重复 Controller 中的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707073/

相关文章:

javascript - Angular View 无法正常运行

javascript - 测试 JavaScript 回调

javascript - 从 1.3.x 错误 : $injector:modulerr 降级到 AngularJS 1.2.28

javascript - jQuery 对 javascript 类方法的 AJAX 调用

angularjs - 无法通过 npm 安装 gulp-jshint

javascript - 操作递归数组

使用 ng-model 的 AngularJS 自定义表单组件/指令

javascript - 如何解决iframe跨域问题

javascript - 如何查看窗口的 Javascript 窗口 ID?用于 Selenium select_window()

javascript - 服务中的 $timeout 未更新范围变量