Javascript 如何让断点在promise结果中的TypeScript fat arrow函数中工作?
所以,我有一个非常简单的角度控制器。我看到Chrome调试器和控制台之间存在分歧,而fat arrow函数作为promise解析器。如果我在处理程序中放置断点,源检查器将无法定义此。作用域。。。但是,日志记录可以很好地工作。我不明白这里是否发生了一些异步的事情,或者promise解析器函数中的fat arrowJavascript 如何让断点在promise结果中的TypeScript fat arrow函数中工作?,javascript,angularjs,google-chrome,typescript,console,Javascript,Angularjs,Google Chrome,Typescript,Console,所以,我有一个非常简单的角度控制器。我看到Chrome调试器和控制台之间存在分歧,而fat arrow函数作为promise解析器。如果我在处理程序中放置断点,源检查器将无法定义此。作用域。。。但是,日志记录可以很好地工作。我不明白这里是否发生了一些异步的事情,或者promise解析器函数中的fat arrow()=>{}函数是否存在作用域错误 或者,Chrome和TS+fat arrow是否存在缺陷,以及在某些情况下它是如何在.js.map中工作的 另外,如果我手动打开.js文件并在执行仍然停
()=>{}
函数是否存在作用域错误
或者,Chrome和TS+fat arrow是否存在缺陷,以及在某些情况下它是如何在.js.map
中工作的
另外,如果我手动打开.js
文件并在执行仍然停止时悬停,我可以悬停在\u this.scope
上,结果是正确的
出于断点的目的,它似乎将其范围限定到窗口,但代码执行工作正常
class DetailController {
scope:any;
userModel:UserModel;
static $inject = ['$scope','$window', 'productModel','sessionModel','userModel', '$routeParams', '$location'];
constructor( $scope,userModel) {
this.scope = $scope;
this.userModel = userModel;
this.scope.products = null;
//if I breakpoint here, this.scope is defined
this.userModel.getCurrentUser().then(()=> {
this.scope.foo = 'bar';
// if I log scope, it is defined and correct
console.log('scope',this.scope);
//if I breakpoint here, this.scope is undefined (hovering it says undefined)
// etc...
var products = this.userModel.getProducts();
if( products.length ){
console.log( 'prods ', this.scope );
this.scope.products = products;
this.scope.product = this.scope.products[0];
}
});
}
testLambda = () => {
console.log( 'test:', this.scope ); //works
this.scope;
// breakpoint here fails to have proper this reference.
}
}
angular.module('App').controller('detailController', DetailController );
更新:我添加了一个测试lambda在lambda的周围范围内是否有一个
\u这个-变量?那么这就是你要找的。TS编译器已将lambda转换为常规函数。我知道这一点,并不是有意的双关语。我想说的是,通常在lambda中,我可以在ts文件中进行调试(断点会一直强制我使用ts版本)。我认为这可能是一个与角度承诺相关的问题,因为这个
似乎适用于任何其他胖箭头函数。我不想一直跳到js,然后每个断点都返回到ts。这很烦人。我认为dubugger没有正确链接到地图是一个错误。