promise
에 싸여있는 코드가 있습니다. 이 코드는 원격 DB의 일부 레코드를 편집하고 편집 된 레코드 수를 반환합니다. 편집 된 레코드 수가 0
보다 큰 경우 (즉, 일부 작업이 완료된 경우) 0
이 다시 나타날 때까지 동일한 방법을 반복해서 실행하고 싶습니다. 즉, 더 이상 레코드를 편집 할 필요가 없습니다.이전 실행 결과에 따라 동일한 약속을 다시 실행할 수 있습니까?
여러 가지 방법을 시도했지만 모두 종료되지 않았기 때문에 (즉 해결되지 않았 음) 제대로 실행되지 않습니다.
첫 번째 버전은 내가 시도 :
const doEdits =() => {
return new Promise((resolve, reject) => {
someDB.performEdits()
.then(count => {
if (count > 0) {
doEdits()
} else {
resolve()
}
})
.catch(reject)
})
}
return new Promise((resolve, reject) => {
someDB.init()
.then(doEdits)
.catch(reject)
})
두 번째 버전은 내가 시도 :
const doEdits =() => {
return new Promise((resolve, reject) => {
someDB.performEdits()
.then(count => {
resolve(count)
})
.catch(reject)
})
}
return new Promise((resolve, reject) => {
someDB.init()
.then(doEdits)
.then(count => {
if (count > 0) {
return doEdits() // 'doEdits()' did not work...
} else {
resolve()
}
})
.catch(reject)
})
일체의 제안을 환영합니다.
'doEdits' 이후에 해결되지 않습니다. 약속은 항상 끝나면 '해결'또는 '거절'해야합니다. – Eric
@ErikKralj, 첫 번째 예제에 대해 이야기하고 있다면'if (count> 0) '다음에'.then (...)'을 수행하고 반환 된 결과를 확인하고 몇 번이고 다시 ... –