Javascript,承诺,如何在then范围内访问变量this
javascript, promises, how to access variable this inside a then scope
我希望能够在内部调用函数。然后作用域,为此我使用this.foo()方式。但是如果我在里面这么做。然后我得到一个错误,因为这个似乎丢失了。我能做什么?
在这段代码中,这相当于对对象有相同的输出
console.log(this)
one().then(function() {
console.log(this)
})
function one() {
var deferred = $q.defer();
deferred.resolve()
return deferred.promise;
}
这似乎都不起作用
console.log(this)
var a = this;
one().then(function(a) {
console.log(a)
})
您的第二个代码示例是正确的方法。因为新函数的作用域发生了变化,所以this
也发生了变化,所以在函数之外引用this
是正确的。
失败的原因是因为函数使用的是您传递给函数的a
,而不是您在函数外部定义的全局a
。
换句话说:
var a = this;
one().then(function () {
console.log(a)
});
更新:使用箭头函数-他们从外部作用域借用上下文(this
)。
function two() {
console.log('Done');
}
one().then(() => {
this.two();
});
function one() {
return new Promise(res => {
setTimeout(() => res(), 2000);
});
}
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 在全局范围内访问嵌套变量的 Nodejs
- 无法访问父范围内的属性,但是我可以通过该属性链查看
- 使对象变量在所有“更深”的范围内都是可访问的
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- 在指令内访问范围
- 如何在 angularjs 指令中的链接函数内访问函数中的范围
- 如何使用 javascript 访问保存在请求范围内的数组或列表
- 角度:从<脚本>标记内访问范围
- Javascript从另一个回调访问对象变量,而不将变量放在全局范围内
- 用于从对象范围内访问对象属性的JavaScript语法
- 对象范围内的变量访问
- 访问函数范围内的本地eval
- Javascript,承诺,如何在then范围内访问变量this
- 在模板范围内访问DOM——AngularJS
- 在资源错误回调的范围内访问表单
- 访问jQuery范围内的函数
- 是否有一种方法可以将字段设置为在子对象范围内,同时可以从父对象访问
- 无法访问范围内的Javascript变量
- 访问闭包范围内的私有(局部)变量