0
누군가 약속대로 할 수 있습니까? 코드는 당신이 볼 수 있듯이, 내가 값이 변경되는 경우를 정기적으로 다시 확인하는 변수 refreshTokenService.wait과 setInterval을을 사용자바 스크립트 - 약속 내부 약속
function getAccessToken(http: Http, router: Router, refreshTokenService: RefreshTokenService): Promise<string> {
let jwtHelper: JwtHelper = new JwtHelper();
let accessToken = localStorage.getItem('JWToken');
if (accessToken == '' || !accessToken || accessToken == undefined || accessToken == null) {
router.navigate(['./admin/login']);
return;
}
if (jwtHelper.isTokenExpired(accessToken)) {
let waitPeriod = (!refreshTokenService.wait);
refreshTokenService.wait = true;
return new Promise((resolve, reject) => {
if (waitPeriod) {
refreshTokenService.refreshToken(accessToken).subscribe((res: any) => {
res = res.json();
if (res.token) {
localStorage.setItem('JWToken', res.token);
resolve(res.token);
refreshTokenService.wait = false;
} else {
localStorage.removeItem('JWToken');
router.navigate(['./admin/login']);
}
});
} else {
let interval = setInterval(function() {
if(refreshTokenService.wait == false) {
resolve(localStorage.getItem('JWToken'));
clearInterval(interval);
}
}, 500);
}
});
} else {
return Promise.resolve(accessToken);
}
}
입니다. 하지만 최선의 약속은 약속 안에서 약속이라고 생각합니다.