承诺不使用监听器触发

时间:2013-10-19 19:59:36

标签: angularjs promise

我有以下代码:

app.factory('testservice', function ($rootScope, $q) {
    var defer = $q.defer();
    defer.promise.then(
        function (){alert('Never fires. Resolve');},
        function (){alert('Never fires. Reject');}
    );
    document.addEventListener('event', function () {
        alert("Fires");
        $rootScope.$apply(defer.resolve);
        alert("Fires");}, false);
   });
}

这是一个有棱有角的网站。而我正在玩各种承诺。问题是,当我在听众中解决承诺时,承诺不会解雇......为什么?

顺便说一下,这里的承诺毫无意义,但我只是在测试...而且我很确定我错过了什么。

1 个答案:

答案 0 :(得分:1)

使用模块运行功能,而不是使用不会调用的工厂进行测试,除非有其它依赖项。我在之前的代码中修复了几个语法错误,现在一切似乎都在运行。

Plunker

使用Javascript:

angular.module('plunker', [])

.run(function ($rootScope, $q, $log) {
    var defer = $q.defer();
    defer.promise.then(
        function (){$log.log('Resolved');},
        function (){$log.log('Rejected');}
    );
    document.addEventListener('mouseenter', function () {
        $log.log("mouse enter fired");
        $rootScope.$apply(defer.resolve);
   });
});