私はリアクティブプログラミング方法を使用してロジックをラップしようとしています。角2オブザーバブルの実装
ローカルストアにあるかどうかに依存する2つの依存データセットがあります。しかし、私は最初に計算し、次に計算する必要があります。
したがって、このような何か:カテゴリ後最初のif
の(1)else
及び(2):
let storageCategories = this.ls.retrieve('categories');
if (storageCategories) {
// Found in localStorage
this.allCategories = storageCategories;
} else {
// Send an HTTP API request and fetch categories
// After request is successful lookup for 'result' in localstorage
// If result not in localstorage send an HTTP API request
}
// RESULT LOGIC
let storageResult = this.ls.retrieve('result');
if (storageResult) {
// Found in localStorage
return new BehaviorSubject<any>(this.processResultData(storageResult));
} else {
// Send an HTTP API request and fetch result
// If request is successful save in localstorage and return
}
は今基本的な問題は、私は2つの場所で結果ロジックを記述したくないですif
結果ロジックを(新しい関数に書き込む以外の)1か所だけにする方法はありますか?
2番目の 'storageResult'では、' storageCategories'のelseと同じエンドポイントにhttp要求をしていますか? – lbrahim
いいえ、storageResults HTTPリクエストは別のAPI呼び出し用です。だから明確にするために:私は最初にカテゴリをチェックする必要があります。それらがローカルストレージで使用可能な場合、それらの値が使用されます。そうでなければ、カテゴリに対するAPIへのリクエストが送信されます。どちらの場合でも、私はlocalstorageの 'results'値をチェックしなければなりません。それが存在する場合はそれを使用します。それ以外の場合は、別のAPI呼び出しを使用して結果を収集するAPI要求を送信する必要があります。これらの呼び出しは非同期であるため、ネストされたコールバックの混乱を避けようとしており、RxJSメソッドを使用してコードを記述したいと考えています。もう少し質問を明確にすることを願っています。 – Hassan
下の私の答えをチェックしてください。 – lbrahim