Was ist ein Missverständnis darüber, wie die .subscribe
-Funktion in Verbindung mit der .do
-Funktion verwendet wird?Eigenschaft 'do' existiert nicht für den Typ 'Subskription'
Hier ist meine beobachtbaren Folge:
lookupSubscriber = (text$: Observable<string>) =>
text$.debounceTime(300)
.distinctUntilChanged()
.do(() => this.searching = true)
.switchMap(term => {
var data = this._callApi(this.lookupSubscriberAPI, term)
.do(() => {
this.searchFailed = false;
this.searching = false;
})
.catch(() => {
this.searchFailed = true;
this.searching = false;
return Observable.of([]);
})
return data;
})
.do(() => this.searching = false);
Wenn meine _callApi Funktion wie folgt ist, funktioniert es:
_callApi(url: string, term: string) {
if (term === '') {
return of.call([]);
}
return map.call(this.dataService.get(url + term), response => {
var data = this._transformSubscriberInfo(response);
return data;
})
}
Allerdings, wenn ich versuche, es mit einem neu zu schreiben subscribe
Funktion wie folgt:
_callApi = (url: string, term: string) => {
return this.dataService.get(url + term)
.subscribe(
response => { this._transformSubscriberInfo(response) },
error => error.text(),
() => {
if (Logging.isEnabled.light) {
console.log('%c API Call Complete', Logging.normal.orange);
}
))
}
... dann gelingt sich der Datenanruf, aber ich erhalte Fehler: Property 'do' does not exist on type 'Subscription'.
Grundsätzlich versuche ich, Fehler zu fangen und eine „immer“ Funktion nach dem API-Aufruf ausführen, wie in der zweiten Version von _callApi
gezeigt.