내 약속 내에서 중첩 된 'while'
루프를 만들려고합니다. 내 innerFunc
에서 문제가 생기면 log.asyncCall().then(...)
IDE에서 내게 바로 말해서 화살표 기능이 .then()
으로 바로 넘어 가서 return innerFunc()
을 포함하고 if statement
으로 가지 않아도됩니다. 경주 조건이 내가 원하는 순서대로 실행되지 않는다고 생각합니다. 내가 달성하기 위해 노력하고 무엇을약속 내에서 중첩 된 'while'루프 실행
요약 :
outerFunc
에 따르면 나는 innerFunc
이 3 번을 수행 할.
무엇 innerFunc
은 log
이 null
이 아닌 한 계속해서 .asyncCall()
을 호출합니다. innerFunc
이 log
을 생성 할 수 없으면 'while'
루프를 종료하십시오.
또한 약속을 디버깅하는 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 현재 WebStorm
과 함께 디버그 기능을 사용하고 있습니다.
var i = 0
const outerFunc =() => {
return new Promise(resolve => {
if (i < 3) {
i++
const innerFunc =() => {
return new Promise(resolve => {
return log.asyncCall().then(lg => {
if (lg) {
// some logic
} else {
resolve()
}
}).then(() => {
// continue iterating innerFunc()
return innerFunc();
});
})
};
// first iteration innerFunc()
return innerFunc().then(() => {
// once innerFunc() is complete, reiterate outerFunc()
return outerFunc();
});
} else {
resolve();
}
});
}
NB를 (NB는 전달 함수는 약속을 리턴하지 않는 경우
repeatPromise
기능이 제대로 작동하지 작성된)'그 때는 (() =가> {innerFunc()를 호출}) '이고 '.then (innerFunc)' – Alnitak으로 더 잘 작성된 경우,'log.asyncCall'에서 사용 된'log' 변수가 이전 반복에서받은 값을 가지기를 기대합니까? (그렇지 않습니다) – Alnitak
@Alnitak 변수 이름으로 죄송합니다. – Liondancer