2016-09-14 1 views
0

그래서 파일의 FileList가 있고 배열에 모두 읽을 필요가 있습니다. [fileData1, fileData2], 그래서 모든 파일을 백엔드에 요청할 수 있습니다. 나는 모든 비동기 동작에 붙어 있고, 일들이 끝나기를 기다리는 방법을 모르겠다. 백엔드에 요청할 수있는시기를 감지 할 방법이 필요합니다. 나는 프로그래밍의 기능적인 방식으로 이것을 만들고 싶다. 질문이 불분명하면 죄송합니다.FileReader로 여러 파일 읽기 및 filedatas 배열 가져 오기

function read_files(cur_file) { 
    if (cur_file < files.length) { 
     // read the next file 
     const fr = new FileReader(); 
     fr.readAsDataURL(files[cur_file]); 
     fr.addEventListener('load', (event) => { 
      // extract the file data from event here 
      read_files(cur_file+1); 
     } 
    } 
    else { 
     // we've read all the files 
     // send the request 
    } 
} 

read_files(0); 

답변

1

당신은 좋은 구식 재귀 함수에 대해 어떻게 functional-programming 태그를 추가하기 때문에. 그 외에, global var를 사용하지 않고 어떻게 load 함수 외부로 파일을 추출 할 수 있습니까?
+0

cur_file 카운터가 좀 기능 프로그래밍의 불변성 규칙을 나누기 :

files.map((file) => { const fr = new FileReader(); fr.readAsDataURL(file) fr.addEventListener('load', (event) => { // This is what I need to get to an array const fileData = event.target.value.substr(fr.result.indexOf(',') + 1); }) }) //Here I need to make a single post request with all the files in it 
user2933157

+0

@ user2933157 당신은'cur_file'에 대해 옳았습니다. 왜냐하면 그것이 전역 변수가되는 이유가 아니기 때문에 코드를 바꿨습니다. 두 번째 질문에 대해서는 배열을'read_files'에 인수로 추가하고 거기에 데이터를 누적 할 수 있습니다. – redneb

+0

고마워! 나는 내일 시험 할 기회가있을 때 이것을 시도 할 것이다. – user2933157