2016-11-26 8 views
0

Я пытаюсь вернуть этот .register() метод:AngularJS Уплотненного Promise

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 ... Это кажется правильными по другим вопросам, я видел, однако я могу 't заставить его работать должным образом. Любая помощь приветствуется. Благодаря!.

+0

Вы имеете в виду, что 'то (весело (push_token))' 'триггеров перед тем register' делается? Также поделитесь 'initialize'. – AndreaM16

+0

Ребята жаль, что я думаю, что это плохо, кажется, что push-уведомления о переносе будут вызываться только при работе на мобильном устройстве и не будут работать в симуляторе. Я дважды проверю это и вернусь к вам. Спасибо за помощь. – user1027620

+1

Не используйте '$ q.defer()' для составления обещаний. У вас уже есть обещание от '$ cordovaPushV5.initialize', обертывание его' defer' просто приведет к ошибкам (в этом случае вы пропустили распространение обратного вызова ошибки в отложенное). – teppic

ответ

1

Я не знаю о Кордове, но обещание кажется прекрасным.
Но это может быть упрощена:

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

Пробовал это так же, он никогда не разрешает или не генерирует ошибку ... – user1027620

+0

Проверить обновление: если вы добавите функцию ошибки, вы можете угадать, что будет сжимать – gr3g