Angular2 Observable - 函数必须返回值

时间:2017-04-10 06:45:37

标签: angular observable

我写了一个angular2服务。 服务应该   - 从其他服务加载数据   - 处理数据   - 应该返回一个包含组件数据的Observable

所以我写了这个:

getTimers(): Observable<Array<Timer>> {
        this.apiService.getTimers().
            subscribe(
            data => {
                this.variables.setTimers(data.length);
                let timers: Array<Timer> = this.formatter.formatTimers(data);
                this.setOngoingTimers(timers);
                return Observable.of(timers);
            },
            error => { return Observable.throw(error); }); 
    }

这是我得到的错误:

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

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:7)

getTimers(): Observable<Array<Timer>> {声明一个返回类型但不返回任何内容。

我假设你想要的是

getTimers(): Observable<Array<Timer>> {
  return this.apiService.getTimers().
        map(
        data => {
            this.variables.setTimers(data.length);
            let timers: Array<Timer> = this.formatter.formatTimers(data);
            this.setOngoingTimers(timers);
            return Observable.of(timers);
        });,
        //error => { return Observable.throw(error); }); 
}

该行

return Observable.of(timers);

仅从传递给map()(前subscribe())的函数返回,而不是从getTimers()

返回