Javascript angular2项目rxjs可观测误差
我正在angular2项目中使用rxjs api 5.0。此代码可能会出现“检测到无法访问的代码”错误。但如果在“setTimeout…”中正确设置“抛出新错误…”,为什么不能在“setTimeout…”中正确设置“新错误…”呢Javascript angular2项目rxjs可观测误差,javascript,angular,ecmascript-6,rxjs,Javascript,Angular,Ecmascript 6,Rxjs,我正在angular2项目中使用rxjs api 5.0。此代码可能会出现“检测到无法访问的代码”错误。但如果在“setTimeout…”中正确设置“抛出新错误…”,为什么不能在“setTimeout…”中正确设置“新错误…”呢 抛出错误将跳转到catch块,忽略其后的任何代码。类似于return语句。这是javascript行为。因此,永远不会调用setTimeout 如果您将其添加到setTimeout,则它是回调,因此它不会检查代码是否无法访问 我不太明白。因为您抛出新错误,所以永远无法到
抛出错误
将跳转到catch块,忽略其后的任何代码。类似于return
语句。这是javascript行为。因此,永远不会调用setTimeout
如果您将其添加到setTimeout,则它是回调,因此它不会检查代码是否无法访问 我不太明白。因为您
抛出新错误
,所以永远无法到达下一行。因此,“无法访问代码”警告代码无法访问setTimeout()
。如果您在没有条件的情况下抛出错误,那么它将始终被抛出,并且错误下方的所有内容都不会执行。
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');
}
);