为什么chrome-dev-tools无法在承诺中正确反映'this'?

时间:2017-11-28 11:50:14

标签: webpack google-chrome-devtools es6-promise source-maps

我使用webpack来编译我的项目,然后我发现如果有承诺,this将被编译为_this2

问题在于,当我在承诺中使用断点时,{ - 1}}将始终在chrome-dev-tools中this

这是一个错误吗? Chromium开发团队难以解决这个问题吗?

现在,源代码:

enter image description here

undefined编译的代码:

enter image description here

因为有源地图,Chrome会为我显示源代码,并且会正确检查承诺之外的webpack

enter image description here

但是,承诺中的this将是this

enter image description here

1 个答案:

答案 0 :(得分:2)

正如您在将代码编译为es5时指出的那样,生成的代码使用_this技巧从声明的上下文中捕获它。问题是源映射本质上只是文本映射,将一部分已编译的代码映射回源代码。这意味着Chrome(或任何其他当前调试器)将无法猜测光标下的this在源代码中具有不同的含义。

解决此问题的一种简单方法是为_this(或您的案例中为this_2)添加一个手表,该手表会显示捕获的内容。