2016-08-08 17 views
4

In meiner angular2-App habe ich einen Dienst, der eine get-Anfrage an eine URL sendet.Eine Funktion, deren deklarierter Typ weder "void" noch "any" ist, muss einen Wert zurückgeben

Hier ist mein Service:

import {Http} from '@angular/http'; 
    import {Observable} from 'rxjs/Observable'; 
    import 'rxjs/add/operator/map'; 
    import {Injectable} from '@angular/core'; 
    import {Gallery} from './gallery'; 

    @Injectable() 
    export class InstagramService{ 

     constructor(private _http:Http){ 

     } 

     getGallery(username: string) : Observable<Gallery> { 
      var result=this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json()); 
console.log(result); 
     return result; 
     } 

    } 

ich den Rückgabetyp als Observable<Gallery> definiert haben, aber es beschwert sich, dass:

A function whose declared type is neither 'void' nor 'any' must return a value 

Was mit diesem Code falsch läuft?

Antwort

4

Wenn Sie einen Rückgabetyp deklarieren, warum dann nichts zurückgeben?

Normalerweise ist dies in diesem Fall gewünscht.

getGallery(username: string) : Observable<Gallery> { 
    return this._http.get("https://www.instagram.com/"+username+"/media/").map(res => res.json()); 
} 

var result wahrscheinlich nicht das, was man ohnehin erwarten, weil _http.get(...) eine Observable keinen Wert zurückgibt.

Der Anrufer von getGallery() kann dann abonnieren, um benachrichtigt zu werden, wenn der Wert ankommt.

instagramService.getGallery.subscribe((result) => this.galleryData = result); 

Wenn ein Wert kommt dann (result) => this.galleryData = result genannt wird und die result-galleryData Ihrer aktuellen Komponente oder Dienst zugeordnet ist.