Der folgende Code ist erfunden. Ich bin so einfach wie möglich, um die Frage zu stellen.Die Eigenschaft 'then' von undefined mit verschachtelten Funktionsaufrufen kann nicht gelesen werden
ich eine einfache Winkel eine Dienstleistung, die ein API-Aufruf und liefert Ergebnisse macht:
doWork = function(reqId) {
return $http.get('/api/dowork/' + reqId).then(function(response) {
return response.data;
}).catch(function(response) {
return $q.reject(response.data);
});
}
mediumRequest = function() {
var req = 'medium';//normally do something hard to derive this value
return this.doWork(req);
}
In meinem Controller, kann ich die doWork Funktion auf den Service anrufen und eine gute Antwort wie folgt zurück:
myService.doWork('simple').then(function(response){
//do something great with response
});
wenn ich aber eine Zwischen Methode zur Vorverarbeitung der Anfrage aufrufen müssen, erhalte ich „Can not Eigenschaft‚und dann‘undefinierter lesen“:
myService.mediumRequest().then(function(response){
//do something great with response
});
Warum gibt die Funktion mediumRequest nicht das Versprechen zurück, dass doWork zu ihr zurückkehrt?
Wie wäre es mit 'return this.doWork (req)' ?? –
Können Sie bitte ein reproduzierbares Beispiel erstellen, das keine API-Aufrufe erfordert? –
Ich habe meinen Beispielcode so bearbeitet, dass er "this.doWork (req)" enthält, so wie mein tatsächlicher Dienst codiert ist. @LeonardoChaia Dieser Code schlägt fehl. –