在流recieving出錯後繼續我在Node.js的一種服務,檢索郵件服務器的電子郵件地址:如何RxJs
export interface IHasEmail {
email: string;
}
export interface IHasMailServer extends IHasEmail {
mailServers: Array<string>
}
export interface IMailServerService {
lookupMailServers(contact: IHasEmail): RX.Observable<IHasMailServer>;
}
我有觸點陣列(IHasEmail)和我想檢索整個列表的郵件服務器。到目前爲止,我有這個:
checkContacts(contacts: Array<contracts.IContact>): void {
Rx.Observable.from(contacts).flatMap<contracts.IHasMailServer>((contact) => {
return this._mailServerService.lookupMailServers(contact)
}).subscribe(
(result) => this.handleResult(result),
(error) => this.handleError(error)
);
}
這工作正常,直到從lookupMailServer的調用之一返回錯誤。此時沒有更多結果返回到handleResults。
我想記錄錯誤,但繼續從其他聯繫人收到成功的結果。我該怎麼做呢?
這個例子的代碼在這裏可以看到:
https://github.com/Roaders/contact-list-checker/tree/4dd0146449a4be6e703a9b60034231cc4c4bdea3
您需要明確處理錯誤。創建一個處理它的新的observable,並將其映射爲'{error:Error,result:IHasMailServer}'。然後使用這個可觀察值,通過'error == null'過濾它並進行日誌記錄。用'error!= null'過濾它,並在流中做任何你想做的事情。 – mostruash