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

В моем приложении angular2 у меня есть служба, которая отправляет запрос на получение 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;
 }
 }
</gallery>

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

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());
}
</gallery>

var result, вероятно, не так, как вы ожидаете, потому что _http.get(...) возвращает Observable не значение.

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

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

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

licensed under cc by-sa 3.0 with attribution.