tonysamperi

013 - rest service cache

Aug 19th, 2022 (edited)
701
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 0.68 KB | Source Code | 0 0
  1. import {ajax} from "rxjs/ajax";
  2. import {map, shareReplay} from "rxjs/operators";
  3.  
  4. class MyRestService {
  5.  
  6.   #cacheables = new Map();
  7.      
  8.   generateAjax(urlOrConfig, enableCache, clear) {
  9.     if(enableCache) {
  10.       const cacheKey = urlOrConfig.url || urlOrConfig;
  11.       if(clear) {
  12.          this.#cacheables.delete(cacheKey);
  13.       }
  14.       this.#cacheables.has(cacheKey) || this.#cacheables.set(cacheKey, this.#generateAjaxBase(urlOrConfig).pipe(shareReplay(1)));
  15.  
  16.       return this.#cacheables.get(cacheKey);
  17.     }
  18.  
  19.     return this.#generateAjaxBase(urlOrConfig);
  20.   }
  21.  
  22.   #generateAjaxBase(urlOrConfig) {
  23.       return ajax(urlOrConfig).pipe(map(r => r.response));
  24.   }
  25.  
  26. }
Advertisement
Add Comment
Please, Sign In to add comment