foreach 안에 promise 채택완료
몰라무서워
6년 전
조회 2,213
foreach 안에 비동기 작동을 하는 부분이 있는데요
하나의 작업이 다 끝나면 다음 foreach 로 넘어가게 하고 싶은데 방법을 모르겠습니다 ㅜㅜ
대충 아래와 같이 되어 있는데 어떻게 해야할지...
재귀호출로 해야할까요? 아오 머리야...
foreach(var i in list){
new Promise(function(resolve, reject){
....
resolve();
}).then(function(result){
...
});
}
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
6년 전
먼저
Promise를 사용하시는 이유가 명확해야 할것 같습니다.
단순히 서버에서 값을 확인하기 위함인지
그리고,
foreach를 사용하는 이유가 무엇인지
왜 멈추어야 하는지
기본적인 로직이 왜 흐름을 중단해야 하는지를 판단해야겠죠
비동기는
흐름은 흐름대로 가고 결과는 결과대로 받겠다라는 기능이니
foreach 에서 제어하고 싶은부분을
비동기의 callback에서 받은결과에 따라 처리하시는게 나을것같습니다.
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 3개
�
몰라무서워
6년 전
아뇨 그니까 promise 에서 then 은 쓰고 있는데 완료될때까지 foreach 가 다음단계로 넘어가지 않게 하는 방법이 궁금한거예요
�
플래토
6년 전
@몰라무서워
비동기를 사용하시면서 동기화를 시키시겠다고 하시는거네요?
그러면 promise를 함수로 감싸서 리턴값을 callback영역인 then에서
리턴을 주고,
foreach에서 해당 리턴이 수신될때즉 변수에 할당될때 작동하게 해보세요
아니시면, 비동기를 안쓰시면 될거 같다는 생각입니다.
비동기를 사용하시면서 동기화를 시키시겠다고 하시는거네요?
그러면 promise를 함수로 감싸서 리턴값을 callback영역인 then에서
리턴을 주고,
foreach에서 해당 리턴이 수신될때즉 변수에 할당될때 작동하게 해보세요
아니시면, 비동기를 안쓰시면 될거 같다는 생각입니다.
�
몰라무서워
6년 전
아 동기인데 비동기라고 제가 잘못 말했네요.
foreach 를 하나의 작업이 완료되기 전까지 다음단계로 안넘어가게 하고 싶은겁니다.
말씀하신대로 해보려고 해도 감이 안잡히네요.
제가 돌빡이라 어떻게 하라는건지 잘 이해가 안갑니다 ㅜㅜ
조금만 예제로 알려주시면 안될까요?
부탁드립니다.
foreach(var i in list){
(function(){
new Promise(function(resolve, reject){
...
}).then(function(result){
//여기서 리턴을 하면 바깥쪽의 function이 아니라 다음 then으로 리턴하지 싶은데요....
return XXX
});
})();
}
foreach 를 하나의 작업이 완료되기 전까지 다음단계로 안넘어가게 하고 싶은겁니다.
말씀하신대로 해보려고 해도 감이 안잡히네요.
제가 돌빡이라 어떻게 하라는건지 잘 이해가 안갑니다 ㅜㅜ
조금만 예제로 알려주시면 안될까요?
부탁드립니다.
foreach(var i in list){
(function(){
new Promise(function(resolve, reject){
...
}).then(function(result){
//여기서 리턴을 하면 바깥쪽의 function이 아니라 다음 then으로 리턴하지 싶은데요....
return XXX
});
})();
}
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인