私は$http
を使用して電話をかけています。成功したコールの結果に基づいて、私はエラー/拒否を投げて、それをエラーとして次のコールにトリクルさせることに決めました。しかし、エラーがスローされた場合、プロセスを停止するだけです。どのようにして、$ httpの約束事を$ qコードでラップせずに拒否するように強制できますか?
// A service
angular.module('app').factory('aService', function ($http, config) {
return {
subscribe: function (params) {
return $http({
url: '...'
method: 'JSONP'
}).then(function (res) {
// This is a successful http call but may be a failure as far as I am concerned so I want the calling code to treat it so.
if (res.data.result === 'error') throw new Error('Big Errror')
}, function (err) {
return err
})
}
}
})
// Controller
aService.subscribe({
'email': '...'
}).then(function (result) {
}, function (result) {
// I want this to be the Big Error message. How do I get here from the success call above?
})
上記のコードでは、大きなエラーメッセージが拒否された呼び出しとして終了するようにしたいと思います。しかし、この場合、それはちょうどエラーで死ぬ。これは、私がBluebirdという言葉で物事を処理する方法ですが、ここには行きません。
いずれの場合も、拒否された約束を返すだけです。$ q.reject( 'reason')。 –
ああ私は '$ q.deferred'でラップしなければならないと思っていましたが、うまくいきました。あなたがしたい場合は、答えとして投稿することができます。 – cyberwombat