質問するログイン新規登録

回答編集履歴

1

複数ファイル選択時に全ファイル読み込み完了後をPromiseで待ち合わせることも可能

2020/07/26 15:59

投稿

tetosept
tetosept

スコア36

answer CHANGED
@@ -23,4 +23,36 @@
23
23
 
24
24
  }
25
25
  ```
26
- こちらで動作するのではないでしょうか?
26
+ こちらで動作するのではないでしょうか?
27
+
28
+ **追記**
29
+ 全ファイル読み込みを待ち合わせるのにはちょっと複雑になってしまうのですがPromiseを使用することで実現可能です
30
+ 例えば下記のとおりです。
31
+ ```ここに言語を入力
32
+ //test.js//
33
+ function main() {
34
+ let inputFiles = document.getElementById('inputFile');
35
+ console.log(inputFiles.value)
36
+ console.log(inputFiles.files)
37
+ let result = [];
38
+
39
+ var promise = []
40
+ for (let i = 0; i < inputFiles.files.length; i++) {
41
+ promise.push(new Promise((resolve, reject) => {
42
+ let reader = new FileReader();
43
+ reader.onload = function () {
44
+ result.push(reader.result)
45
+ resolve()
46
+ };
47
+ reader.readAsText(inputFiles.files[i]);
48
+ }))
49
+ }
50
+ Promise.all(promise).then(() => {
51
+ console.log('result[0]',result[0]);
52
+ })
53
+ //ここでテキストの内容をString型として使いたい
54
+ }
55
+
56
+ let button1 = document.getElementById('button1');
57
+ button1.addEventListener('click', main);
58
+ ```