0

在役

this._ProductUrl =".../api/products"

getProduct(): Observable <IProduct[]>{   
  return this._http.get(this._ProductUrl)
    .map((response:Response) =>  <IProduct[]> response.json())
    .catch(this.handleError);
}  

app.component.ts

间隔不工作

Observable
  .interval(2*60*1000)
  .timeInterval()
  .flatMap((this._productService.getProduct())
  .subscribe((response) => {

}),(err)=> {this.errorMsg =<any>err};

将鼠标悬停在该行上时会显示一些错误。此行中的错误:

    Argument of type '(err: TimeInterval<number>) => void' is not assignable to parameter of type '(value: TimeInterval<number>, index: number) => ObservableInput<{}>'.

  Type 'void' is not assignable to type 'ObservableInput<{}>'

当这样尝试时

  Observable
    .interval(2*60*1000)
    .timeInterval()
    .flatMap((this._productService.getProduct(response))).subscribe((response) => {

    }),(err)=> {this.errorMsg =<any>err};

此行错误:

.flatMap((this._productService.getProduct(response)

 [ts] Expected 0 arguments, but got 1.
(property) AppComponent._productService: ProductServic

e

没有间隔工作正常

 this._productService.getProduct().subscribe((response) => {
console.log(error);

}),(err)=> {this.errorMsg =<any>err};

以上代码存在语法问题,请提供更好的解决方案,不胜感激

4

2 回答 2

4

试试这样:

Observable.interval(2000).subscribe((x) => {
    this._productService.getProduct()
        .subscribe((response) => {
            console.log('response', response)
        })
})

或者使用flatMap()你可以像下面这样尝试

Observable.interval(2000)
    .timeInterval()
    .flatMap((x) => {
        return this._productService.getProduct()
    })
    .subscribe((response) => {
        console.log('response', response);
    })
于 2017-11-28T07:29:14.903 回答
0

尝试更改错误处理和单一订阅:

      Observable
        .interval(2000)
        .switchMap(() => {
            return this._productService.getProduct();
        })
        .catch(err => {
            // handle errors
            this.errorMsg = <any>err;
            // rethrow error
            return Observable.throw(err);
            // or just return some correct value
            // return Observable.of(new Product())

        })
        .subscribe(response => console.dir(response));

UPD:响应记录错误

于 2017-11-28T07:45:08.177 回答