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。该代码可能是错误的"检测到无法到达的代码"。但是,如果在" settimeout ...'之后,在" settimeout"中丢下新错误...'之后,为什么在" settimeout ..."中无法制作'theow误差...'之前呢?
throw error
将跳跃以捕捉块,忽略任何代码。像return
语句。这是JavaScript行为。因此,Settimeout从未被调用。
如果将其添加到settimeout,则是回调,因此它不会检查代码是否无法到达代码。