Chrome DevTools 无法在 Promise 中正确地反映 this
的原因是因为 Promise 的回调函数是在全局作用域中执行的,而不是在创建 Promise 的对象的作用域中执行的。这导致在 Promise 回调函数中使用 this
关键字时,它指向的是全局对象(通常是 window
对象),而不是创建 Promise 的对象。
这个问题可以通过使用箭头函数来解决。箭头函数不会创建自己的 this
,而是继承外部作用域的 this
。因此,在 Promise 回调函数中使用箭头函数可以正确地反映出创建 Promise 的对象的 this
。
以下是一个示例代码:
class MyClass {
constructor() {
this.name = 'MyClass';
}
async myMethod() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(this.name); // 正确地输出 'MyClass'
resolve();
}, 1000);
});
}
}
const myObject = new MyClass();
myObject.myMethod();
在上面的示例中,myMethod
方法返回一个 Promise,并在 Promise 回调函数中使用箭头函数。这样,箭头函数继承了 myMethod
方法的作用域,因此可以正确地访问到 this.name
。
腾讯云相关产品和产品介绍链接地址:
没有搜到相关的结果
领取专属 10元无门槛券
手把手带您无忧上云