【发布时间】:2019-12-12 12:27:51
【问题描述】:
这是使用 Observables 绑定数据的正确方法吗?如果是,我的代码还有什么问题导致 selectedCourse 变量等于未定义?
this.golfDataService
.getGolfData(id)
.subscribe(data => {
this.selectedCourse = data.data
console.log(data.data)
})
setTimeout(function () { console.log(this.selectedCourse) }, 2000);
}
我希望两个console.log语句返回相同的东西,但只有第一个console.log返回数据,这是一个包含高尔夫球场信息的对象,但console.log(this.selectedCourse)返回未定义。
【问题讨论】:
-
将其更改为
setTimeout(() => { console.log(this.selectedCourse) }, 2000);,如果它足够快,它将返回正确的值。如果您使用函数,它将this重新绑定到该函数上下文而不是组件 -
你正在创建一个闭包和一个竞争条件,只是不是很好的做法,使用箭头函数并且不要依赖计时器
标签: javascript angular observable