在我的angular2应用程序中,我有服务向网址发送获取请求 .
这是我的服务:
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 回答
如果你声明一个返回类型,为什么不返回任何东西?
通常这就是你想要的情况 .
var result
可能不是你所期望的,因为_http.get(...)
返回一个Observable
而不是一个值 .然后,
getGallery()
的调用者可以订阅以在值到达时收到通知 .当值到达时,将调用
(result) => this.galleryData = result
,并将result
分配给当前组件或服务的galleryData
.