我創建了一個typeahead,每次有人輸入時都會遠程調用api,輸入後會有小的延遲。重寫可觀察序列以使其更有意義
此代碼從bootstrap 4 typeahead example docs (Wikipedia example)。所有.call
和_do
函數對我來說都沒有意義。
角度成分
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)這是什麼做的英語?現在我不明白如何正常閱讀這些內容,因此無法根據我的需要重寫它。
2)有人能幫我改寫這個更具可讀性的格式嗎?比如使用承諾的鏈式序列,或者其他更有意義的東西。
美麗!謝謝,那正是我所期待的。 – TetraDev