Ich möchte in der Lage sein, eine Funktion innerhalb des . Then Bereichs aufzurufen, und dafür verwende ich das this. foo () Weise. Aber wenn ich das innerhalb der . Dann bekomme ich eine Fehlermeldung, da diese scheint verloren zu sein. Was kann ich tun?
In diesem Code wäre dies gleichbedeutend mit der gleichen Ausgabe für das Objekt . This
console.log(this)
one().then(function() {
console.log(this)
})
function one() {
var deferred = $q.defer();
deferred.resolve()
return deferred.promise;
}
Dies scheint auch nicht zu funktionieren
console.log(this)
var a = this;
one().then(function(a) {
console.log(a)
})
Ihr zweites Codebeispiel ist der richtige Weg. Da sich der Gültigkeitsbereich in der neuen Funktion ändert, ändert sich auch this
, sodass Sie zu Recht einen Verweis auf this
außerhalb der Funktion erstellen können.
Der Grund dafür ist, dass die Funktion a
verwendet, das Sie an die Funktion übergeben haben, und nicht an das globale a
, das Sie außerhalb der Funktion definiert haben.
Mit anderen Worten:
var a = this;
one().then(function () {
console.log(a)
});