首页 文章

声明类型既不是'void'也不是'any'的函数必须返回一个值

提问于
浏览
7

在我的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 回答

  • 7

    如果你声明一个返回类型,为什么不返回任何东西?

    通常这就是你想要的情况 .

    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 .

相关问题