Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

211
Vistas
cómo mapear una identificación repetida en el almacenamiento local

tengo este codigo, su idea es guardar el producto en localstorage y cuando el producto ya esta en localstorage no vuelve a hacer la peticion

 getItemById(id) { // return this.http.get(`${environment.API_URL}item/getById/${id}`); return this.cacheS.getOrSetCache(`StoreService_getItemById_${id}_${this.layout.emp.id}`, this.http.get(`${environment.API_URL}item/getById/${id}`), 300000); } getOrSetCache(key: string, request: Observable<any>, msToExpire = 3600000): Observable<any> { let cache: any = {}; const keyy = 'StoreService_getItemById_teste'; cache = JSON.parse(localStorage.getItem(keyy)); return (cache?.data && (cache?.exp > Date.now())) ? of(cache.data) : request.pipe( tap(v => { let arr: any[] = []; let string = localStorage.getItem(keyy); if (string) arr = JSON.parse(string); console.log(arr) arr.push({data: v, exp: (Date.now() + msToExpire)}); localStorage.setItem(keyy, JSON.stringify(arr)); }) ); }

¿Cómo podría mapear las identificaciones para que cuando ya las tenga en localstorage no realice la solicitud de esa identificación?

tambien queria saber como podria ver sobre la fecha de caducidad si la hora actual es igual o mayor a este timestamp, lo quita de la cache y vuelve a hacer la consulta

ingrese la descripción de la imagen aquí en la imagen se puede ver que tiene dos ids repetidos

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Después de analizar el elemento de almacenamiento local, use javascript find para verificar si la matriz ya contiene la ID.

 getItemById(id) { // return this.http.get(`${environment.API_URL}item/getById/${id}`); return this.cacheS.getOrSetCache( id, `StoreService_getItemById_${id}_${this.layout.emp.id}`, this.http.get(`${environment.API_URL}item/getById/${id}`), 300000 ); } getOrSetCache( id: any, key: string, request: Observable<any>, msToExpire = 3600000 ): Observable<any> { let cache: any = {}; const keyy = 'StoreService_getItemById_teste'; cache = JSON.parse(localStorage.getItem(keyy)); return (cache?.data && cache?.exp > Date.now()) || (cache?.data && cache?.data.find(item => item.data.id === id)) ? of(cache.data) : request.pipe( tap(v => { let arr: any[] = []; let string = localStorage.getItem(keyy); if (string) arr = JSON.parse(string); console.log(arr); arr.push({ data: v, exp: Date.now() + msToExpire }); localStorage.setItem(keyy, JSON.stringify(arr)); }) ); }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda