随着promisses的简单,我可以告诉函数void函数的返回类型是Promise(我希望我对它有用)。
我想对Observables做同样的事情,所以它会像:
import {Observable, Subject} from "rxjs/Rx"
...
private personArray:Person[] = PERSONS; ///some persons in other file.
...
///This fucntion remove one person from my service.
public remove(id:number):Observable<void> {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.from(); ???
}
感谢。
答案 0 :(得分:1)
如果您只想要OnCompleted消息,请使用Observable.empty()
。如果发生错误,您可以使用Observable.throw(...)
:
public remove(id:number):Observable<void> {
try {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty();
} catch (e) {
return Observable.throw(e);
}
}
或者,您可以使用.defer()
。如果您的函数抛出异常,则会(自动)抛出OnError:
public remove(id:number):Observable<void> {
return Observable.defer(() => {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty();
});
}
答案 1 :(得分:0)
由于您无法真正使用void
并且该类型无关紧要,因为没有人会尝试解释任何值,只需使用any
:
public remove(id:number):Observable<any> {
this.personArray = this.personArray.filter(person1=>person1.id !== id);
return Observable.empty<any>();
}