Skip to content

Rxjs debounceTime + distinct to optimize instant search without sending spam requests to server

Notifications You must be signed in to change notification settings

hengkysanjaya123/angular-instant-search

Repository files navigation

AngularInstantSearch

export class AppComponent {
  title = 'angular-instant-search';
  searchKeyword: string;
  latestSearch = new Subject<string>();
  results: any[];

  constructor(private archiveService: ArchiveService) {
    this.latestSearch.pipe(
      // To retrieve new data from HTTP if at least 500ms since the last change
      debounceTime(500),
      // Only emit new value if the term is change
      distinct()
    ).subscribe(keyword => {
      this.archiveService.getArchive(this.searchKeyword).subscribe(res => this.results = res.response.docs);
    });
  }

  newSearch(searchKeyword): void {
    this.latestSearch.next(searchKeyword);
  }
}

This project was generated with Angular CLI version 10.1.3.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

About

Rxjs debounceTime + distinct to optimize instant search without sending spam requests to server

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published