与observer.throw(err)
和observer.error(err)
有什么区别?
我使用的是RxJS版本" 5.0.0-beta.12"
var innerObservable = new Observable(observer => {
console.log('Inner observable call failed');
observer.error(new Error('Call failed!'));
})
var outerObservable = new Observable(observer => {
innerObservable.subscribe(
data => {
observer.next(data);
observer.onCompleted();
},
err => {
//observer.throw(err); // `console.error` doesn't get called
observer.error(err); //// `console.error` it's called
}
)
});
outerObservable.subscribe(
next => {
console.log('ok!');
}
, err => {
console.error('error');
}
, () => {
console.log('done');
}
);
答案 0 :(得分:8)
实际上你的观察者是Subscriber class
的一个实例。它有error()
方法,但没有throw()
方法
那里有Observable.throw()
,但那是不同的。
observer.throw(err)
不存在。
Observable.throw(err)
是一个仅发出一个error
通知的可观察对象。
observer.error()
通常在Observable.create()
回调中用于向新订阅的观察者发送error
通知(就像.next()
或.complete
)
答案 1 :(得分:0)
订阅服务器上没有throw
方法。
如果您尝试调用throw
方法,则会看到以下错误:
TypeError: observer.throw is not a function
你确定你没有在某处发现错误吗?
当您construct Observable
时,您传递的函数将收到Subscriber,该Observer实现了{{3}}界面。