인프런 커뮤니티 질문&답변

컴공과님의 프로필 이미지
컴공과

작성한 질문수

코어 자바스크립트

화살표 함수 문의

작성

·

295

0

화살표 함수 관련 문의 드립니다.

 

화살표 함수 내에 결과값은 배열로 응답이 오는데 화살표 함수 외부에 선언된 값은

배열로 응답이 오지 않습니다. 방법을 찾아보았는데 해결하지 못하여 문의  드립니다.

 

const ReadExcelSheet = async excelFile => {

const wb = new Excel.Workbook()

const reader = new FileReader()

 

let excelDataList = []

reader.readAsArrayBuffer(excelFile)

reader.onload = () => {

const buffer = reader.result

wb.xlsx.load(buffer).then(workbook => {

const sheet = workbook.getWorksheet(1)

 

let row_num = 13

sheet.eachRow((row, rowIndex) => {

let resultData = {}

resultData.title = row.getCell(3).text

excelDataList.push(resultData)

})

                        console.log(excelDataList);    //여기서는 배열로 로그에 남음

})

}

        console.log(excelDataList);    //여기서는 배열로 남지 않음

        return excelDataList

}

답변 2

0

컴공과님의 프로필 이미지
컴공과
질문자

우선 저의 질문으로 언짢게 해드려서 죄송하며 강의와 관련되지 않은 부분에도 답변 주셔서 감사 드립니다.

다음부터는 질문시에 주의하도록 하겠습니다.

 

 

0

정재남님의 프로필 이미지
정재남
지식공유자

- 화살표함수는 본 강의에서 다루지 않는 내용입니다.
- 만족스러운 답변을 받으려면 최소한의 성의를 보여주세요. 코드를 알아볼 수 있게 인덴트 정도는 맞춰주십시오.

위 이유들로 인해 답변드리고 싶은 생각이 들지 않는데, 그럼에도 불구하고 답변을 드려 보겠습니다.
이런 식으로 강의와 무관한 내용을 최소한의 성의도 없이 무례하게 질문하시는 분들이 종종 계시는데 ,
강사 입장에서는 기분이 좋지 않을 수밖에 없다는 점 알아주시고 조심해 주시면 좋겠습니다.

코드를 살펴본 바, 화살표함수라서 문제가 아니라 콜백함수의 의미를 정확히 인지하지 못하고 계신 것 같습니다.
onload = () => { ... } 부분은 reader의 로딩이 완료된 시점에서야 비로소 호출되는 함수로 보이는데, 마지막줄에서의 excelDataList는 해당 콜백함수가 호출되기 전에 먼저 실행되어 버리므로, 배열 요소는 비어있는게 당연합니다.

컴공과님의 프로필 이미지
컴공과

작성한 질문수

질문하기