this
의 의미는 콜백 함수에서 다른를 해결하려면 어떻게해야
내가 뭔가를 정의되지 않은 반환 할 시도 할 경우
....
여러 가지 방법으로 해결할 수 있지만 여기에는 두 가지가 있습니다.
캡처 문제가 해결 단순히 어떻게 자바 스크립트를 폐쇄 이후 당신은 새 값을 얻기에서 this
을 방지 할 수있는 또 다른 변수
이의 값. 하지만 할 수있는 것은 값인으로 다른 값을 정의하는 것입니다.
_login: function() {
var email = this.$.emailvalue.value;
var password = this.$.passwordvalue.value;
var self = this;
return this.$.authenticate.signInWithEmailAndPassword(email, password).then(function() {
self._animateView();
}, function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage);
self._animateErrorView();
});
}
사용 지방 화살표 기능
ES6 소위 지방 화살표로 함수를 선언 할 수있는 새로운 방법을 정의 (=>
: 저는 개인적으로 더 자세한 설명 뭔가를 선호하지만 변수에 대한 관용적 이름은 self
입니다). 코드가 약간 줄어드는 것 외에도 λ/콜백에있는 this
의 값은 변경되지 않습니다. 기본적으로 당신이 매일 콜백에 .bind(this)
를 추가 그래서
_login: function() {
var email = this.$.emailvalue.value;
var password = this.$.passwordvalue.value;
return this.$.authenticate.signInWithEmailAndPassword(email, password).then(function() {
// Sign-in successful.
//this._animateView(); **returns undefined**
}.bind(this), function(error) {
// An error happened.
// // Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage);
// this._animateErrorView(); **returns undefined**
}.bind(this));
},
: 그래서
@Frank 반 Puffelen 응답에 추가
_login: function() {
var email = this.$.emailvalue.value;
var password = this.$.passwordvalue.value;
return this.$.authenticate.signInWithEmailAndPassword(email, password).then(() => {
this._animateView();
}, (error) => {
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorMessage);
this._animateErrorView();
});
}