我希望能够在 .then 范围内调用一个函数,为此我使用 this.foo()方式。但如果我在 .then 中执行此操作,则会出现错误,因为此似乎已丢失。我该怎么办?
在此代码中,这相当于对象具有相同的输出
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)
})
答案 0 :(得分:41)
你的第二个代码示例是正确的方法。由于新功能的范围发生了变化,this
也会发生变化,因此您可以在功能之外引用this
。
失败的原因是因为函数正在使用您传递给函数的a
而不是您在其外部定义的全局a
。
换句话说:
var a = this;
one().then(function () {
console.log(a)
});