如何在Promise回调中访问实例变量
How to access an instance variable within a Promise callback?
假设我有一个基本的哑javascript类:
var FunctionX = function(configs) {
this.funcConfigs = configs;
}
FunctionX.prototype.getData = function() {
return $.get('/url');
}
FunctionX.prototype.show = function(promise) {
console.log(this.funcConfigs); // <-- this here is the promise itself, I'm looking to get the instance's configs
}
FunctionX.prototype.setup = function() {
this.GetData().then(show);
}
var f = new FunctionX({ "a": "b" });
f.setup();
现在我在show函数中尝试访问实例变量"funcConfig"。"This"是promise,"funcConfigs"直接返回undefined。
我试图用.resolveWith(this)
解决这个问题,但它不能解决这个问题。
如何访问此范围上下文中的实例变量?
与user2864740
一致,该问题很可能是由于show
作为回调调用时this
不是您所期望的那样。为了使其正常工作,您需要在闭包(例如var that = this;
)中捕获适当的this
,并显式调用它。
换句话说。。。
FunctionX.prototype.setup = function() {
var that = this;
this.getData().then(function () {
that.show();
});
}
编辑:为了获得更简洁的语法(使用下划线.js):
FunctionX.prototype.setup = function() {
var that = this;
this.getData().then(_.bind(this.show, this));
}
相关文章:
- 如何在事件函数中访问窗口实例
- 为什么原型需要通过实例访问
- 访问 javascript 对象的实例变量
- Angular2/Typescript:从链接可观察函数访问实例变量
- 如何在Promise回调中访问实例变量
- 如何在 JavaScript 中循环访问此 List 类的实例
- 如何访问类实例上的事件侦听器
- 从 $scope 上的函数访问控制器内的实例函数
- 如何在使用构造函数进行原型设计时访问实例
- Javascript中最快的类/对象访问/实例化是什么
- 如何访问实例上的静态成员
- 从视图访问实例变量
- Rails:从非内联JS访问实例变量
- 为什么不应该't我直接访问实例属性进行写操作
- 从父函数访问实例变量
- 访问实例方法时出现的JavaScript OO问题
- 在angularjs中重载传递给指令的函数对象或访问实例方法中的方法
- 从附加到原型的对象中访问实例变量
- 可以共享作用域和访问实例的私有原型方法
- 当将实例方法传递给另一个函数时,如何访问实例方法中的实例属性