• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 React 게시판 React의 async 특성으로 인한 오류...

React의 async 특성으로 인한 오류...

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 글쓴이
  • #19316

    Taeyoon Kim
    참가자

    안녕하세요 강사님. 

    react의 async 특성 때문에 생기는 오류같습니다. 이때까지는 그냥 함수 안에 넣어서 해결하였는데, 이번에는 잘 안되었습니다.

    server.js 파일에서 작업하고 있고, 가장 아래에 있는 그림을 보시면, 2번 코드영역에서 1번의 sendData의 content 값을 설정하고, 3번의 return 항목으로 전달하는 코드입니다.  async특성때문에 null값이 출력이 됩니다. 

    시도1:

    그림에서 2번 코드영역에서  

    result.stdout.on('data', function (data) {
    sendData.set(data.toString())}

    부분을 아래와 같이 원하는 값을 return하도록 바꾸어 보았고, 결과는 result에 포함된 항목들 전체가 출력됩니다.

    const dataContent=result.stdout.on('data', function (data) {
    return data.toString()
    }) 

    시도2 는 useEffect를 써보았는데, 아래와 같은 오류가 뜹니다.

    server.js에서 useEffect쓰는 것이 잘못된 것인가요? 라이브러리는 정상적으로 불러왔습니다.

    server.js에서 async문제를 해결할 수 있는 방법이 따로 있는건가요? 

    답변 부탁드립니다. 

    감사합니다.

    error useEffect

     

    pic1

     

    #19320

    codingapple
    키 마스터

    useEffect는 리액트 컴포넌트함수 안에서만 쓰는 문법입니다  

    console.log(sendData.content)

    return { 어쩌구 }

    이거 하는 코드를 

    result.stdout.on('data' 여기 콜백함수 안으로 옮겨봅시다 

    #19344

    Taeyoon Kim
    참가자

    사실 그렇게 미리 해 보았습니다.

    하지만, return 값 전체가 undefined로 출력됩니다. ㅠㅠ

    #19345

    Taeyoon Kim
    참가자

    console.log(sendData.content)

    return { 어쩌구 }

    이거 하는 코드를 

    result.stdout.on('data' 여기 콜백함수 안으로 옮겨봅시다.

    위와 같이 하니 return 값 전체가undefined로 출력이 되고, 

    콜백함수 안에서 바로 res.send({  ....  })로 보내려고 하니 , 

    아래와 같은 에러가 뜹니다.

    Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    정말 이것저것 한다고 해봤는데 안되네요. 강사님 강의 다시 보고도 있는데, 잘 모르겠네요.

    조언 부탁드립니다. 

    #19347

    codingapple
    키 마스터

    그 콜백함수안에서 

    return {어쩌구} 하지말고

    var 변수 = {어쩌구} 이렇게 변수에 저장해서 쓰면 될듯요?

    Cannot set headers after they are sent to the client 이건 res.send() 이런거 두세번 하면 나오는 에러같습니다 

    #19350

    Taeyoon Kim
    참가자

    네 해결했습니다.

    조언 감사합니다~^^

6 글 보임 - 1 에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠