foreach 안에 promise

foreach 안에 promise

QA

foreach 안에 promise

본문

foreach 안에 비동기 작동을 하는 부분이 있는데요

하나의 작업이 다 끝나면 다음 foreach 로 넘어가게 하고 싶은데 방법을 모르겠습니다 ㅜㅜ

대충 아래와 같이 되어 있는데 어떻게 해야할지...

재귀호출로 해야할까요?  아오 머리야...

 

foreach(var i in list){

    new Promise(function(resolve, reject){

        ....

        resolve();

    }).then(function(result){

        ...

    });

}

 

 

이 질문에 댓글 쓰기 :

답변 2

먼저

Promise를 사용하시는 이유가 명확해야 할것 같습니다.

단순히 서버에서 값을 확인하기 위함인지

 

그리고,

 

foreach를 사용하는 이유가 무엇인지

왜 멈추어야 하는지 

 

기본적인 로직이 왜 흐름을 중단해야 하는지를 판단해야겠죠

 

비동기는

흐름은 흐름대로 가고 결과는 결과대로 받겠다라는 기능이니

 

foreach 에서 제어하고 싶은부분을

 

비동기의 callback에서 받은결과에 따라 처리하시는게 나을것같습니다.

 

 

.then(function(){

  // 여기에 구성해보세요


비동기를 사용하시면서 동기화를 시키시겠다고 하시는거네요?
그러면 promise를 함수로 감싸서 리턴값을 callback영역인 then에서
리턴을 주고,
foreach에서 해당 리턴이 수신될때즉 변수에 할당될때 작동하게 해보세요

아니시면, 비동기를 안쓰시면 될거 같다는 생각입니다.

아 동기인데 비동기라고 제가 잘못 말했네요.
foreach 를 하나의 작업이 완료되기 전까지 다음단계로 안넘어가게 하고 싶은겁니다.

말씀하신대로 해보려고 해도 감이 안잡히네요.
제가 돌빡이라 어떻게 하라는건지 잘 이해가 안갑니다 ㅜㅜ
조금만 예제로 알려주시면 안될까요?
부탁드립니다.


foreach(var i in list){
    (function(){
      new Promise(function(resolve, reject){
      ...
      }).then(function(result){
            //여기서 리턴을 하면 바깥쪽의 function이 아니라 다음 then으로 리턴하지 싶은데요....
            return  XXX
      });
    })();
}

답변을 작성하시기 전에 로그인 해주세요.
전체 44
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT