Je crée une typeahead qui appelle à distance une API à chaque fois que quelqu'un saisit l'entrée, avec un petit délai après la saisie. Ce code est de bootstrap 4 typeahead example docs (Wikipedia example). Cela n'a aucun sens avec toutes les fonctions .call
et _do
.Réécriture d'une séquence observable pour avoir plus de sens
composante angulaire
import { map } from 'rxjs/operator/map';
import { debounceTime } from 'rxjs/operator/debounceTime';
import { distinctUntilChanged } from 'rxjs/operator/distinctUntilChanged';
import { _catch } from 'rxjs/operator/catch';
import { _do } from 'rxjs/operator/do';
import { switchMap } from 'rxjs/operator/switchMap';
search = (text$: Observable<string>) =>
_do.call(
switchMap.call(
_do.call(distinctUntilChanged.call(
debounceTime.call(text$, 300)),
() => this.searching = true),
(term) => _catch.call(
_do.call(this._service.search(term),
() => this.searchFailed = false),
() => {
this.searchFailed = true;
return of.call([]);
})),
() => this.searching = false);
HTML
<md-input-container>
<input mdInput [ngbTypeahead]="search"
[(ngModel)]="model"
[formControl]="lookupSubscriberControl"
type="text"
placeholder="Search by Name">
<button type="submit" mdSuffix class="material-icons">search</button>
</md-input-container>
1) Qu'est-ce que cela fait en anglais? À l'heure actuelle, je ne comprends pas comment lire ceci en termes normaux et je ne peux donc pas le réécrire pour mes besoins.
2) Quelqu'un peut-il m'aider à le réécrire dans un format plus lisible? Tels que l'utilisation de la séquence enchaînée des promesses, ou toute autre chose qui a plus de sens.
Magnifique! Merci, c'est exactement ce que je cherchais. – TetraDev