我目前正在尝试使 Angular 2 Observable 的 timeout(( 方法正常工作,但在所有教程中都有类似的代码,其中 timeout(( 方法的第二个参数是一个简单的错误:
return this.http.get('http://...')
.timeout(2000, new Error('Timeout exceeded'));
但是当我复制这段代码时,TypeScript 说第二个参数的类型无效,并希望看到实现接口 IScheduler 的 smth。
解决问题的方法之一是创建实现 IScheduler 接口的新类,但它具有我不熟悉的功能(now(( 方法和任务(。
有谁知道,我应该以这种方式做,还是有其他方法可以让事情顺利进行?如果我想放置一些回调函数而不是错误怎么办?
timeout
不将Error
作为参数。如果发生超时,它将抛出TimeoutError
。
如果要引发特定类型的错误,可以使用 timeoutWith
运算符执行以下操作:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/timeoutWith';
return this.http
.get('http://...')
.timeoutWith(2000, Observable.throw(new Error('Boom!')));