AngularJS嵌套无极

AngularJS嵌套无极

问题描述:

我试图返回此.register()方法:AngularJS嵌套无极

var deferred = $q.defer(); 
    $cordovaPushV5.initialize($constants.PUSH_OPTIONS).then(function() { 
     $cordovaPushV5.onError(); 
     $cordovaPushV5.onNotification(); 

     return $cordovaPushV5.register(); 
    }).then(function (push_token) { 
     deferred.resolve(push_token); 
    }); 
    return deferred.promise; 

但它不会与push_token解决......这似乎是根据我见过的其他问题是正确的,不过,我可以不要让它正常工作..任何帮助,非常感谢。谢谢!。

+0

你的意思是',然后(乐趣(push_token))'register'完成之前'触发?还分享'initialize'。 – AndreaM16

+0

伙计们抱歉,我认为这是我的错,似乎$ cordova推送通知只会在移动设备上运行时触发,并且不会在模拟器中运行。我会仔细检查这一点并回复你。感谢您的帮助。 – user1027620

+1

不要使用'$ q.defer()'来编写promise。你已经有'$ cordovaPushV5.initialize'的承诺,用'defer'封装它只会导致错误(在这种情况下,你忽略了将错误回调传递给延迟)。 – teppic

我不知道科尔多瓦,但承诺似乎很好。
但它可以简化为:

return $cordovaPushV5.initialize($constants.PUSH_OPTIONS) 
     .then(function() { 
      $cordovaPushV5.onError(); 
      $cordovaPushV5.onNotification(); 
      return $cordovaPushV5.register(); 
     }, function(error) { 
      console.log(error); 
    }); 
+0

试过了,它永远不会解决或产生错误... – user1027620

+0

检查更新:如果添加错误功能,您可能会理解发生了什么事情 – gr3g