2017-05-01 3 views
2

Ich versuche, eine Funktion zu schreiben, die einen API-Aufruf macht und ein Versprechen zurückgibt. Hier ist meine Funktion Definition:Fehler - inkonsistenter Rückgabetyp (mit Abschluss Compiler Promise)

/** 
    * Gets the IAM policy for a service account. Wraps getIamPolicy endpoint: 
    * https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/getIamPolicy 
    * @param {!Project} project 
    * @param {string} email - Unique email for a service account. 
    * @return {!angular.$q.Promise<!Object<!string, !Policy>>} 
    */ 
    getIamPolicy(project, email) { 
    const path = constructPath_(project, email) + ':getIamPolicy'; 
    return this.apiClient_.request({method: 'POST', path}, this.config_) 
     .then(response => { debugger; }); 
    } 

ich den Verschluss-Compiler bin mit, und das wirft einen Compiler-Fehler:

service-account-service.js:124: ERROR - inconsistent return type 
found : angular.$q.Promise<undefined> 
required: angular.$q.Promise<Object<string,Policy>> 
    return this.apiClient_.request({method: 'POST', path}, this.config_) 
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Was mache ich falsch? Wie soll ich das Versprechen zurückgeben?

Die vorherigen Funktionen, die ich mit meiner Hilfsfunktion apiClient_.request geschrieben habe, funktionieren einwandfrei. Ich sollte den gleichen Wert von this.apiClient_.request zurückgeben.

Richtlinie und Projekt sind in einer externen Datei definiert (ich glaube richtig). Ich verwende auch Angular 1.4

Antwort

2

Die Promise<undefined>, dass der Fehler sagt, dass Sie zurückkehren, ist korrekt. Während die this.apiClient_.request Hilfsfunktion ein Versprechen zurückgibt, wird der Rückgabetyp des Versprechens (das <undefined> Bit) von .then(response => { debugger; }) Code überschrieben. dh, dieser Code hat keine return-Anweisung, also gibt er undefined zurück!

So arbeitete es, wenn ich meinen Code geändert:

return this.apiClient_.request({method: 'POST', path}, this.config_) 
    .then(response => { 
     debugger; 
     return response; 
    }); 
Verwandte Themen