2016-09-14 11 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タグを追加するので。それ以外に、グローバル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'について正しくあります。なぜなら、それがグローバル変数である理由ではなく、私のコードを変更したからです。 2番目の質問については、 'read_files'に引数として配列を追加し、そこにデータを蓄積することができます。 – redneb

+0

ありがとう!私は明日それを試すチャンスがあるときにこれを試してみます。 – user2933157

関連する問題