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

回答編集履歴

2

コード修正

2018/05/26 05:57

投稿

karamarimo
karamarimo

スコア2555

answer CHANGED
@@ -36,9 +36,10 @@
36
36
  async function scanFiles(entry, tmpObject) {
37
37
  if (entry.isDirectory) {
38
38
  const entryReader = entry.createReader()
39
- const entries = await new Promise(resolve => {
39
+ const entries = await new Promise((resolve, reject) => {
40
- entryReader.readEntries(entries =>
40
+ entryReader.readEntries(
41
- resolve(entries)
41
+ entries => resolve(entries),
42
+ err => reject(err)
42
43
  )
43
44
  })
44
45
  await Promise.all(entries.map(entry => scanFiles(entry, tmpObject)))

1

微修正

2018/05/26 05:57

投稿

karamarimo
karamarimo

スコア2555

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  自分で`Promise`のインスタンスを作るのは、`Promise`を返さないような非同期な処理を`Promise`に変換するときです。今の場合`entryReader.readEntries(...)`がそれです。
4
4
 
5
- `scanFiles`の結果るには、それが`Promise`を返す必要があります。そしてその`Promise`はスキャンが終了した時にresolveしなければいけません。
5
+ `scanFiles`が処理終えたタイミングで何かをするには、それが`Promise`を返す必要があります。そしてその`Promise`はスキャンが終了した時にresolveしなければいけません。
6
6
 
7
7
  ```js
8
8
  for (let i = 0, len = entries.length; i < len; i++)