【问题标题】:angularjs deferred.reject() not workingangularjs deferred.reject() 不工作
【发布时间】:2013-06-07 18:05:04
【问题描述】:

我正在使用带有 angularjs 的 firebase。我想推迟FirebaseAuthClient 回调。 一切正常,但如果添加,只是拒绝不起作用。 请看我的 sn-p 代码。

在工厂

    auth.callback = function(error, user) {
    $timeout(function() {
        if (user) {
            deferred.resolve(user);
        } else if (error) {
            deferred.reject(error);
        } else {
            //QUESTION HERE, if this line is added, the promise 
            //will not working at all means function inside 
            //.then() will not trigger. If I comment it out
            //Everything work fine, but how can I know if use logout ?
            deferred.reject(); 
        }

    }, 0);
    return deferred.promise;
}

auth.firebaseAuthClient = new FirebaseAuthClient(firebaseRef, function(error, user) {
    auth.callback(error, user);
});

在.run()中

    firebaseAuth.callback().then(function(success){
        $rootScope.isLoggedIn = true;
    }, function(fail) {
        $rootScope.isLoggedIn = false;
    })

【问题讨论】:

  • 你在哪里定义了 deferred ?
  • @Ajaybeniwal 只是 sn-p 代码。我在顶部定义了 var deferred = $q.defer();

标签: angularjs firebase


【解决方案1】:

您在 then 函数调用的失败回调中缺少 return $q.reject(reason) 代码。

它在$q angularjs docs中被覆盖

【讨论】:

  • 嗨,查尔斯,我不明白。我添加了deferred.reject('user not login')。然后我在.then() 函数中测试console.log(),但它返回用户未登录,我确认用户已经登录。
  • 我也没有看到,then()中的第二个回调函数不就是失败回调函数吗?
  • 这也没有为我解决。有人可以发布一个拒绝()工作的jsfiddle ...(停止执行以下then())
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 2012-12-22
  • 2017-04-13
  • 2014-07-22
  • 2014-05-03
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多