2017-11-07 14 views
0

コンソールで大きな404エラーが発生するのではなく、私のobservableが失敗したときにカスタムエラー処理を生成しようとしています。しかし、私が読んだチュートリアルの数が何であっても、どのように動作するかは分かりません。次のようにjavascript observableエラー処理

私のコードは次のとおりです。

datacontext.graph.getUserProfilePicture('', detailedData.id) 
.then(function success(photo) { 
    console.log("succesful call" + photo); 
}) 
.catch(function error(err) { 
    console.log("error" + err); 
}); 

成功文は動作しますが、しかし、インクルードは方法がない失敗します。成功した場合に

function getUserPic(principalName) { 
      var deferred = $q.defer(); 
      var endpoint = config.baseGraphApiUrl + "users/" + principalName + "/photo/$value"; 
      $http.get(endpoint, { responseType: 'blob' }).then(function (result) { 
       var file = new Blob([result.data], { type: 'image/jpeg' }); 
       var fileURL = URL.createObjectURL(file); 

       deferred.resolve(fileURL); 
      }, function (data) { 
       console.log(error); 
      }); 

      return deferred.promise; 
     } 

それが返されます: 成功し、コールブロブ:失敗した場合にhttp://localhost:8480/7da29a36-d13d-440f-8207-75f1cde58fcf

を、それが返されます。 https://graph.microsoft.com/v1.0/users/63c31121-cd15-4f48-ba43-8dea613f19cd/photo/ $値404をここで

は、私は、icrosoftグラフのエンドポイントに作るの呼び出しがあります(見つかりません)

+1

これが観測ようには見えませんが、約束。 –

+0

成功か失敗かのどちらかです。 – undefined

+0

.catch(function(err){console.log(err})は、このような行を置き換えます。 –

答えて

0

あなたはこれを試しましたか:

.then(function success(photo) { 
    console.log("succesful call" + photo); 
}, function(err){ 
    console.log("error" + err); 
}) 

0

しかし、失敗メソッドは機能しません。

.getUserProfilePicture約束を返します。約束は成功する(解決される)か、失敗する(拒否される)。 getUserProfilePictureが無効なデータを渡しても解決すると、バグが発生します。あなたの投稿されたコードは、約束の異なる状態の処理に関しては問題ありません。

あなたは手動であなたがあなたの成功ハンドラでエラーを投げることができる約束を拒否したい場合:

datacontext.graph.getUserProfilePicture('', detailedData.id) 
.then(function success(photo) { 
    console.log("succesful call" + photo); 
    throw new Error('I am an error!'); 
}) 
.catch(function error(err) { 
    console.log("error" + err); 
}); 
+0

これは成功を成し遂げるでしょう、実際には私が探していた経路ではなく、提案に感謝 –

+0

@RodneyWormsbecherまあ、そのエラーは実際には意味をなさない、ほんの一例です。あなたは実際に解決された約束を常に返すコードを修正するべきです!あなたの 'getUserPic'関数で' console.log(error); 'を' deferred.reject(error) 'に置き換えてみてください!関連する質問が見つかりました:https://stackoverflow.com/questions/27282577/when-to-use-deferred-reject – undefined