Vue中使用Promise获取数据this指向问题

发布于 2022-09-11 15:40:54 字数 664 浏览 18 评论 0

假设methods中有个获取数据的方法getData
接收返回的数据参数为resultData
mounted里的写法

// 外面这个this
this.getData().then(response => {
  let result = response.data
// 里面这个this
  this.resultData = result
})

我的问题是 外面这个this 和 里面这个this 指向到底是否一样
调试的时候有时候then方法里面的thisundefined,有时候又是和外面的this指向一致,都是vuecomponent。而且即使里面的thisundefined,页面中也会显示resultData的值

箭头函数的内部的this是词法作用域,由上下文决定,那理论上里面的this外面的this指向应该是一致的?可是为什么又会有不同的情况发生呢?

如果您知道答案,期待您的解答~ 感谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

好听的两个字的网名 2022-09-18 15:40:54

按照你的描述,我想到一种可能性,有可能外层的this改变,造成了箭头函数里面的this跟着改变
你可以用下面的语句测试看看

const that=this
this.getData().then(response => {
  let result = response.data
  console.log(this,that)            // 看看当 this 为 undefined 时, that 是不是也为 undefined
  this.resultData = result
})
情场扛把子 2022-09-18 15:40:54

用的是浏览器里面的断点? 浏览器里面打断点调试可能会出现这种现象,这种现象并不代表代码有问题。

嘿咻 2022-09-18 15:40:54

this是函数产生的, 定义一个函数就会产生作用域和this.
你已经知道箭头函数不产生this, 所以你代码里的外面和里面this指向相同.

另外, 如果你说有时候this是undefined, 那么仔细检查下代码, 这个情况是不会发生的, 只有出现function foo() {}或者是es6的写法foo () {}才会产生新的this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文