반응형
Promise 를 이용한 값 대기
/**
* 파라미터로 받은 token에서 정보를 확인 하여 저장
* 데이터를 가져오는동안 token === null 이기 때문에,
* 해당 구문이 동작하지 않기때문에 20ms 마다 가져오는 것으로 설정하였습니다.
*/
function promiseTimeout (token) {
if (!token) return // promiseTimeout(token)
return new Promise((resolve, reject) => {
// token 이 들어올때까지 20ms 마다 체크하기
const interval = 20 // 임의로 20ms 로 설정 (20ms 마다 확인하기)
let timeout = 1000 // 임의로 1s 로 설정
const intervalId = () => {
setTimeout(() => {
// timeout 이 0 이 될 때까지 대기하기
timeout -= interval
// timeout 이 0 이하라면 token 값이 아주 안들어온다는 의미
if (timeout < 1) {
clearTimeout(intervalId)
return reject(new Error('Token 이 없습니다.'))
}
// token 이 갑자기 들어오는 경우,
// 모든 timeout 을 지우고 resolve 를 행합니다.
if (token) {
clearTimeout(intervalId)
return resolve()
}
return intervalId()
}, interval)
}
intervalId()
})
}
// 처음엔 token 이 null 이었지만 어느순간 들어온경우
let token = null
setTimeout(() => { token = 'THIS_IS_TOKEN' }, 100)
promiseTimeout(token)
.then(() => console.log('Token 이 들어왔어요!'))
.catch((error) => { console.error(error) })
반응형
'FRONTEND > Javascript' 카테고리의 다른 글
231001 src 내부 image 파일 import 후 다운로드 하는 방법 (0) | 2023.10.01 |
---|---|
230930 Promise 객체로 image file 목록 모두 Base64 로 변환하기 (0) | 2023.09.30 |
220801 Typescript Destructuring (0) | 2022.08.01 |
220801 Typescript Handbook (0) | 2022.08.01 |
220627 월 TDD 정의 및 효과 (0) | 2022.06.27 |
댓글