RxJs如何在ReplaySubject中引发异常?

时间:2017-05-10 08:12:00

标签: error-handling rxjs angular2-services

我有角度2服务

import * as localforage from "localforage";
import { ReplaySubject } from 'rxjs/ReplaySubject';

@Injectable()
export class CommentService {
    private localForage = require("localforage");

    addComment (myvalue: string): Observable<Comment[]> {
        var reply:ReplaySubject<any> = new ReplaySubject(1);
        localforage.setItem(that.key, that.elencoCommenti).then(function (value) {
            //throw new Error("Value cannot be 3");
            reply.throw(Error('Error2'));           
            //              reply.next( value );
            //              reply.complete();
        });
        return reply;
    }

}

此服务包含了引发异常的方法。 当我尝试订阅时

submitComment(){
    // Variable to hold a reference of addComment
    let commentOperation:Observable<string>;

    commentOperation = this.commentService.addComment(this.model)

    // Subscribe to observable
    commentOperation.subscribe(
                            comments => {
                                console.log('ok:');
                                console.log(comments);
                            }, 
                            err => {
                                // Log errors if any
                                console.log('error:');
                                console.log(err);
                            });
}

我没有收到错误。 如何在ReplaySubject中引发异常?

1 个答案:

答案 0 :(得分:6)

reply.error("some error");应该这样做。

但是我建议你不要在ReplaySubject中抛出错误 - 因为任何错误都会最终确定Subject并使其无法用于将来的使用,并会自动取消订阅任何订阅者 - 除非是你想在这里实现什么。