작성
·
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는 해당 콜백함수가 호출되기 전에 먼저 실행되어 버리므로, 배열 요소는 비어있는게 당연합니다.