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解决......这似乎是根据我见过的其他问题是正确的,不过,我可以不要让它正常工作..任何帮助,非常感谢。谢谢!。
答
我不知道科尔多瓦,但承诺似乎很好。
但它可以简化为:
return $cordovaPushV5.initialize($constants.PUSH_OPTIONS)
.then(function() {
$cordovaPushV5.onError();
$cordovaPushV5.onNotification();
return $cordovaPushV5.register();
}, function(error) {
console.log(error);
});
+0
试过了,它永远不会解决或产生错误... – user1027620
+0
检查更新:如果添加错误功能,您可能会理解发生了什么事情 – gr3g
你的意思是',然后(乐趣(push_token))'register'完成之前'触发?还分享'initialize'。 – AndreaM16
伙计们抱歉,我认为这是我的错,似乎$ cordova推送通知只会在移动设备上运行时触发,并且不会在模拟器中运行。我会仔细检查这一点并回复你。感谢您的帮助。 – user1027620
不要使用'$ q.defer()'来编写promise。你已经有'$ cordovaPushV5.initialize'的承诺,用'defer'封装它只会导致错误(在这种情况下,你忽略了将错误回调传递给延迟)。 – teppic