OperatorFunction<T, number>: Un Observable de un solo valor que representa el número de elementos contados.
Descripción
Indica cuántos valores se han emitido cuando la fuente se completa.
count transforma un Observable que emite valores en un Observable que emite un solo valor que representa el número de valores emitidos por el Observable fuente. Si el Observable fuente finaliza con un error, count enviará la notificación de error sin emitir un valor. Si el Observable fuente no llega a finalizar en ningún momento, count no emitirá ningún valor ni finalizará.
Este operador recibe una función opcional predicate como argumento, en cuyo caso la emisión representará el número de emisiones que cumplan la función booleana.
import { range } from"rxjs";import { count } from"rxjs/operators";constnumber$=range(1,4);// Contar el número de emisionesnumber$.pipe(count()).subscribe(console.log);// Salida: 4
import { of } from"rxjs";import { ajax } from"rxjs/ajax";import { concatMap, count } from"rxjs/operators";// Al no existir el Pokémon con id -3, hacer la petición provocará un errorconstpokemonId$=of(1,5,-3);functiongetPokemon(id:number) {returnajax(`https://pokeapi.co/api/v2/pokemon/${id}`);}pokemonId$.pipe(concatMap((id) =>getPokemon(id)),count(({ status }) => status ===200) ).subscribe(console.log,console.error);// Salida:
Gestionar el error para que count cuente el número de peticiones realizadas con éxito
import { of } from"rxjs";import { ajax } from"rxjs/ajax";import { catchError, concatMap, count } from"rxjs/operators";// Al no existir el Pokémon con id -3, hacer la petición provocará un errorconstpokemonId$=of(1,5,-3);functiongetPokemon(id:number) {returnajax(`https://pokeapi.co/api/v2/pokemon/${id}`).pipe(catchError((err) =>of(err)) );}pokemonId$.pipe(concatMap((id) =>getPokemon(id)),count(({ status }) => status ===200) ).subscribe(console.log,console.error);// Salida: 2
Ejemplos de la documentación oficial
Contar cuántos segundos pasan desde el primer click