2016-11-26 26 views
0

私はこの.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

あなたはregister'が行われる前に ''その後、(楽しい(push_tokenが)) 'トリガーという意味ですか?また、 'initialize'を共有してください。 – AndreaM16

+0

皆さん、ごめんなさい申し訳ありませんが、私の悪いと思うのは、$ cordovaプッシュ通知は、モバイルデバイス上で実行されている場合にのみ起動し、シミュレータでは動作しません。私はこれをもう一度チェックして、あなたに戻ってきます。ヘルプthoをありがとう。 – 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

関連する問題