量角器和Angular的$ q.defer

时间:2015-09-24 08:40:48

标签: angularjs protractor angular-promise deferred

我有这样的角度代码:

$scope.logout = function() {
    console.log(1);
    clearCookies().then(function() {
        console.log(2);
        $state.go('loginScreen');
   });
};

function clearCookies() {
    var defer = $q.defer();
    if(something) {
       sendSomeRequest().then(function() {
           defer.resolve();
       });
    } else {
        defer.resolve();
    }
    return defer.promise;
}

$ scope.logout函数调用元素的ng-click。 我有测试:

element(by.css('[class="logout-button"]')).click();

我永远不会在控制台中看到“2”,通过我认为“然后”回调在由量角器触发时永远不会被触发。它永远不会做出“$ state.go”动作。 也许我错过了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:5)

您应该返回defer.promise;

您可以找到有关$ q here in the official docs的更多信息。