Функция, объявленный тип которой не является ни "void", ни "any", должна возвращать значение

в моем приложении angular2 у меня есть служба, которая отправляет запрос get на url.

вот мои услуги:

    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;
        }

    }

Я определил тип возврата как Observable<Gallery>, но он жалуется, что:

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

что происходит с этим кодом?

1 ответов


если объявить тип возврата, то почему бы не вернуть все?

обычно это то, что вы хотите в этом случае.

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

var result вероятно, не то, что вы ожидаете в любом случае, потому что _http.get(...) возвращает Observable не является ценностью.

абонент getGallery() можно подписаться, чтобы получить уведомление, когда значение прибывает.

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

когда значение прибывает, то (result) => this.galleryData = result и result назначена galleryData вашего текущего компонента или услуга.