2017-04-04 19 views
1

サードパーティのアプリケーションに依存するReact Nativeのネイティブモジュールを作成しています。ネイティブモジュール - 約束を返すときのベストコンベンション

モジュール内の機能の1つであるisInstalledは、ユーザーがデバイスにインストールされているアプリを持っているかどうかを確認します。この関数は結果とともに約束を返します。アプリがインストールされている場合、明らかに約束が解決されます。現在、私はちょうどresolve(true)を返しています。

ユーザーがアプリをインストールしていない場合の対処方法に疑問があります。

私はまだ約束をresolve(false)と解決するべきですか、または約束を拒否する方が良いか、または実際の例外のために予約する必要がありますか?

+1

これはあまりにも意見に基づいている可能性がありますが、それは厳しい要求ですが。 –

+1

私は、質問に対する答えが「いいえ」ではなく、質問に答えて何かが間違っていたら、約束を拒否することを好む傾向があります。 – GregL

答えて

1

この方法を呼び出すコードでは、ユーザーがアプリをインストールしていない場合を処理する必要がありますか?これは非常に可能性の高いシナリオなので、「はい」と言います。

アプリがインストールされているかどうかの解答で解決することによって、約束の消費者はその答えに基づいて分岐することになります。

アプリがインストールされていないときに拒否する場合は、エラーハンドラーをアタッチしないで、アプリがインストールされていない可能性が高いシナリオを決して処理しないという危険性があります。

拒否が処理されない場合は、TrackJSのようなエラー報告ツールやコンソールで未処理の約束拒否メッセージとして表示されることがあります。

+0

それは非常に良い説明です、ありがとう:) – David

3

一般的な契約は次のとおりです。該当する操作が機能していれば解決し、そうでなければ拒否します。

質問は次のとおりです。操作は何ですか? isInstalledという名前が与えられていると、私はその操作がアプリがインストールされているかどうかを判断していると言います。だから、もしそれが何らかの理由でできないなら、それが決定を下すことができれば(どちらの方法でも、アプリがインストールされているかインストールされていないか)機能しませんでした。

+0

これは最も理にかなっていると思います。私はそれが両方の方法で使われているのを見たので、私が見ることができなかった拒絶を使う理由があるかどうかはわかりませんでした。 – David