특정 조건을 만족할 때까지 반복하기
promise 구문을 이용하여 특정 조건을 만족할 때까지 반복하기 위한 예제 코드
function funcPromise (data, percent) {
return new Promise((resolve, reject) => {
resolve({
result: percent === 100? 'ok' : 'no',
percent: percent
})
})
}
function promiseLoop (data, func) {
let percent = 0
return new Promise((resolve, reject) => {
let loop = () => {
func(data, percent)
.then(res => {
if (res.percent >= 100) {
resolve(res.result)
} else {
percent += 25
console.info('[INFO] api call retry : ', percent)
setTimeout(loop(data), 30 * 1000)
}
})
}
loop(data)
})
}
promiseLoop({key: 10}, funcPromise)
.then(res => {
console.log('result : ', res)
})
setTimeout을 promise 패턴으로 구현
function delay(sec = 3000) {
return new Promise((resolve) => setTimeout(resolve, sec));
}
console.log('timeout call');
await delay();
console.log('timeout called');
Promise.race(iterable)
iterable 안에 있는 Promise 중에 가장 먼저 resolve 또는 reject 된 Promise의 결과값을 반환받는다.