2017-05-11 5 views
0

私はJavaScriptで簡単なREST APIを書いています。約束を使用し、解決/拒否の仕組みを使用するときのベストなアプローチは何ですか?成功のためだけに約束しますか?

最初に私は次のように約束の署名を作りたかった:

successたちは、すなわちコード 200を持って、いくつかのデータを持っていることを意味しますが、エラーがすなわち私たちは、サーバから 404を得ることを意味
MyApi.getSomeData() 
    .then(responseSuccess => console.log(responseSuccess)) 
    .catch(responseError => console.log(responseError) 

。 APIメソッドを使用するエンドユーザーが特定のオブジェクトを取得する際にエラー(catch)を保証するようにしたいと考えました。

しかし、約束が何らかの例外を内部(何らかのランタイムエラーなど)でスローするとどうなりますか?その後、私のresponseError構造体の代わりにこのErrorで約束が拒否されます。

どのような場合に最適なアプローチですか?操作の成功、操作の失敗(意図的には404コード)と操作の予期しないエラーを区別する方法

+0

'これらのケースで最も良いアプローチは何ですか? - それは本当に依存しています –

答えて

0

約束事のランタイムエラーは、キャッチブロックをトリガーします。それを避けることはありません。ただし、ランタイムエラーとネットワークエラーは、エラーの内容を確認することで区別できます。したがって、このロジックを共通の場所で抽象化して再利用することもできます。

+0

これは私が考えていたものですが、使い方の観点からはきれいにしたいと思っていました。したがって、エンドユーザはキャッチブロックのエラーのタイプを確認する必要はありません。たぶん約束が '.then()。catch()。exception()'型であったとすれば、もっと簡単になるでしょう。 –

+0

実際には、2つの出力タイプ( 'then'と' catch')と3つのケース( 'success'、' failure'、 'runtime execption')しか持たないので、 –

関連する問題