해결된 질문
22.03.20 11:40 작성
·
187
0
강사님 안녕하세요
resolve( )에 대해 질문드리고 싶습니다
아래의 소스코드를 봐주시면
setInterval( )이 1초마다
resolve(message)를 실행해줍니다.
.then((message)=>{
return new Promise((resolve, reject)=>
{
setInterval(()=>{
console.log('1초마다 실행');
resolve(message);},1000);
});
})
.then((message2)=>{
return new Promise((resolve, reject)=>
{
setTimeout(()=>{
console.log('0.5초 후 실행');
resolve(message2);},500);
});
})
그런데, 다음 .then( )으로 간 경우는
첫 번째 resolve(message) 일 때 뿐이었고
setInterval( ) 으로 1초마다 반복해서
resolve(message) 를 호출해도
resolve(message)를 2번째 호출할 때부터는
다음 .then( ) 구문으로 가지 않았습니다.
그래서 원인을 생각해봤는데,
resolve( )만 리턴해서 그런 게 아닐까 라는 생각이 들었습니다
setInterval( ) 이 resolve( ) 뿐만 아니라, promise( resolve( ) )를 반복하게 해봤습니다
.then((message)=>{
return setInterval(()=>{ new Promise((resolve, reject)=>
{
console.log('1초마다 실행');
resolve(message);
});
} ,1000);
})
그러나 이번에도 2번째 호출부터는 다음 .then 으로 넘어가지 않았습니다
이번에는 then의 콜백 자체를 감싸봤습니다
.then(setInterval((message)=>{
return new Promise((resolve, reject)=>
{
console.log('1초 후 실행');
resolve(message);
});
},1000))
그래도 결과는 마찬가지였습니다
그래서 혹시 그 이유가 궁금해서
setInterval( ) 로 resolve( message ) 또는 new promise( resolve( message ) ) 또는 then의 콜백함수까지 반복 호출해도
2번째 호출 부터는 다음 .then 으로 넘어가지 않는 이유에 대해 질문드리고 싶습니다
답변 1
1
2022. 03. 20. 12:19
가르쳐주셔서 감사합니다