我正试图用反应式编程方法来包装我的逻辑。Angular 2 Observables implementation
我有两个依赖数据集可能或可能不在本地存储。不过,我需要先计算一个,然后计算第二个。
因此,像这样:
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
}
现在的基本问题是我不想写在两个地方的结果逻辑:(1)第一if
的else
和(2)后的类别if
有没有办法让结果逻辑只在一个地方(除了写入一个新的函数)?
在'storageResult'的第二个else中,您是否向同一端点发出一个http请求,以至于'storageCategories'? – lbrahim
不,storageResults HTTP请求用于另一个API调用。为了澄清:我需要首先检查类别。如果它们在本地存储中可用,则会使用这些值。如果不是,则将发送针对类别的API请求。在这两种情况下,我都必须检查localstorage中的'results'值。如果它存在,那么我们使用它,否则我们需要发送一个API请求来使用另一个API调用收集结果。因为这些调用是异步的,所以他们做了一个嵌套的回调混乱,我试图避免并希望使用RxJS方法编写代码。我希望它稍微澄清一下这个问题。 – Hassan
请在下面查看我的答案。 – lbrahim