アングルコントリートメントRXJS


カドドHacemosラAplicaciは、n、alunos datos como el menの人、las opcionesなしcamfla con la frecuencia.El Mejor enfoque es almacenarlo en cach es,porque cuando el usuario se mueve por la aplicaci des n,buscar los datos en el servidor nuevamente,es algo ingoario e impactan en la speidad y la periencia del usuario
rxjs nos brinda una manera f cil e y y almacenarlo,ソロusando dos operadores hacen que la magia suceda,シェアy sharreplay estos permiten hacer llamadas inrequire ario o recalcular datos que preamente fueron calculados

Ejemplo


Tengo Nuna Aplicaciは、簡単なコンドスルタスAホームYについて、家のmuestra na lista de jugadoresデla nba、procesamosロスdatos paraのConsuuir su nombre完了している利用可能なPurmer y segundo nombre.
Cada vez que el usuario mueve entre la p en gina de home y,nuestro component ennecsita obtener los datos y tambi e n realizar el proceso

En otros escenarios esto puede ser un progreso grande y costoso.


El OpteniendoロスDatos nuevamente、SIのcambian詐欺la frecuencia?アルメネラー・エヌにおけるパレイス・ケイト

usando sharereplay


マヨレレモスの視覚的Sabemos - Cuando Fueron procesadosとしてのMayjoraremos El Renumiento y Nustra Aplicaci des n , Evitaremos und Cell Seneso de Compilaci
ShareerPlay NOS Ayuda Almacenar Datos en Cach en en Nuestras Aplicaciones F . Col .

Puedes leer mas sobre shareReplay


エヌMa Jejeco Emplearemos国連Servicio、エルCual hace na peticiは、na API API traerロスjugadoresです.
AgregaremosエルOperador Sharereplayエヌエルflujoデdatos、y tomaremos la respuesta del http y asignando el sharereplay al最終的なコンエルn n、メロ1 como parはメトロMemtiremosラSent Limtimesiは、de Mi Solicitud HTTPです.
彼は、Realizadoを地図デLos Datos Agregando Dos Propiedades FullName que es La Concatenaciによって得ます.
@Injectable()
export class NbaService {
  api = 'https://www.balldontlie.io/api/v1/';

  private teamUrl = this.api + 'players';
  public players$ = this.http.get<any[]>(this.teamUrl).pipe(
    map((value: any) => {
      return value?.data.map((player) => ({
        ...player,
        fullName: `${player.first_name} ${player.last_name}`,
        processed: new Date().toISOString(),
      }));
    }),
    shareReplay(1),
  );

  constructor(private http: HttpClient) {}
}
完全な、パラオver datos en la la p . gina、usamosエルoperador日付パイプパラシュートで降下してください.
<ul *ngIf="players$ | async as players">
  <li *ngFor="let player of players">
    {{ player.fullName }} {{ player.processed | date: 'medium' }}
  </li>
</ul>
完全に、Si Ahora Navegamos en la la plulacaci n n d una na p . gina a otra y regresamos a la p . gina de inicio,obtendr par los datos del cach es,esto puedes verlo en el devtool en el tab tab network
つのデMomento todo muyビアン、pero como forzamosは、alalalizarロスdatosです?

エル・カスティ


Nustro Cach Les Her Mil Maravillas , Plao a Veces Los Usualia Queren Forzar la Acializaci la n , de c c Mo Mo podemos Hacerlo ?rxjs siempre busca hacer nuestra vida f . cil!
<研究ノート>「行動主義」についての一考察
Primero Creamos el BehaviorのTipo void y un nuevo m { todo updatedata () para Emitir la acci des n , creamos una nueva variable apirequest $ para almacenar el Observable de HTTP
Nuestro観測可能なプレーヤー$ obtendrは、エルValor Behaviorsubject y Canalizarは、Los Datos USADO EL Operador MegememapパラCombinar La Resouresta HTTP Y Devolver EL観察可能な、アルFinal del Proceso Agregaremos Nuestro Shareerplayをします.

Leer mas sobre mergeMap


エルC .ディゴ最終的なserは、goとしてalgoを言います:
@Injectable()
export class NbaService {
  private _playersData$ = new BehaviorSubject<void>(undefined);
  api = 'https://www.balldontlie.io/api/v1/';

  private teamUrl = this.api + 'players';
  apiRequest$ = this.http.get<any[]>(this.teamUrl).pipe(
    map((value: any) => {
      console.log('getting data from server');
      return value?.data.map((player) => ({
        ...player,
        fullName: `${player.first_name} ${
          player.last_name
        } ${Date.now().toFixed()}`,
      }));
    })
  );

  public players$ = this._playersData$.pipe(
    mergeMap(() => this.apiRequest$),
    shareReplay(1)
  );

  constructor(private http: HttpClient) {}

  updateData() {
    this._playersData$.next();
  }
}
エヌラPは、gina、Agregamos un nuevoボットは、パラシュートで降下します.
https://stackblitz.com/edit/angular-ivy-hbf6dc

再開する


エヌレジュレン、ヘムVosto como podemos crear uncar la actualizaci tn n n tan t f cilmente usando rxjs,se as la que pr pr xia vez que quieras mejorar la velocity idad y la respuestes es superf . cf!
<研究ノート>民謡における民俗学の研究(その2 )

  • 倉田

  • デボラクラタによって
  • Lama RoscuUnsplashによる写真