Angular 2 호출 집합Interval() 정의되지 않은 서비스 양식 종속성 주입
setInterval()을 사용하여 10분마다 함수를 호출하고 이 함수에서 Angular 2의 Dependency Injector에서 받는 서비스(auth라고 함)를 사용하려고 합니다. 문제는 콘솔이 다음과 같이 알려준다는 것입니다.
예외:유형 오류: this.인증이 정의되지 않았습니다.
constructor(private auth: AuthService){
setInterval(function(){ this.auth.refreshToken(); }, 1000 * 60 * 10);
}
setInterval에 지정된 함수에서 이것은 클래스가 호출될 때 클래스를 가리키지 않습니다.
대신 화살표 기능을 사용합니다.
constructor(private auth: AuthService){
setInterval(() => { this.auth.refreshToken(); }, 1000 * 60 * 10);
}
이 문제에 대한 자세한 내용은 "이 문제"라는 제목의 setInterval() 메서드에 대한 설명서에서 확인할 수 있습니다.페이지 중간쯤에.
jist는 그것이 "이것" 변수의 변화의 결과라는 것입니다.setInterval() 함수로 전달되는 함수는 클래스 컨텍스트에서 추출되어 setInterval()(창)의 컨텍스트에 배치됩니다.그래서, 그것은 정의되지 않았습니다.
이 문제에 대한 몇 가지 해결책이 있습니다.위의 toskv에서 제안한 방법은 상당히 일반적인 접근법입니다.또 다른 해결책은 bind() 메서드를 사용하는 것입니다.
constructor(private auth: AuthService) {
setInterval(this.auth.refreshToken.bind(this), 1000 * 60 * 10);
}
bind() 메서드에 대한 설명서입니다.
자바스크립트 범위에 대한 좋은 기사입니다. 이것은 여전히 활자 스크립트에서 여러분을 괴롭힐 수 있습니다.
그것을 해결하기 위한 작은 속임수가 있습니다.이게 도움이 되길 바랍니다.
첫번째로
const this1 = this;
그리고나서
constructor(private auth: AuthService) {
setInterval(this1.auth.refreshToken.bind(this), 1000 * 60 * 10);
}
언급URL : https://stackoverflow.com/questions/35828830/angular-2-call-setinterval-undefined-services-form-dependency-injection
'source' 카테고리의 다른 글
getResources().getColor()가 더 이상 사용되지 않습니다. (0) | 2023.06.11 |
---|---|
UIButton: 선택된 강조 표시된 상태에 대한 이미지 설정 (0) | 2023.06.11 |
1064. SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 'OUTPUT' 근처에서 사용할 올바른 구문을 확인하십시오. (0) | 2023.06.11 |
VBA Excel "컴파일 오류: 개체 필요" (0) | 2023.06.11 |
실 제거 방법 (0) | 2023.06.11 |