var bar = Observable.create(function(observer){
try{
console.log('hello');
observer.next(22);
throw new Error('bad bad bad');
setTimeout(function(){
observer.next(300);
observer.complete();
},2000);
}catch(e){
observer.error(e);
}
});
bar.subscribe(
function nextValueHandler(x){
console.log(`out in handler${x}`);
},
function errorHandler(err){
console.log('is wrong'+err);
},
function completeHandler(){
console.log('over');
}
);
我在angular2项目中使用rxjs api 5.0。此代码可能是错误的,检测到无法访问的代码。'但如果make'抛出新错误......'在' setTimeout ...'在它正确之后,为什么不能做出错误......'在' setTimeout ...'之前?
答案 0 :(得分:0)
throw error
将跳转到catch块,忽略后面的任何代码。像return
声明一样。它的javascript行为。所以从不调用setTimeout。
如果您将其添加到setTimeout,它会回调,因此如果代码无法访问,则无法检查代码。