3 ms·
The problem here is the closure on totalSize and where you're awaiting, totalSize is going to be 0 for all files and then you await for the result of getSize, s
by DrammBA 4y ago
The problem here is the closure on totalSize and where you're awaiting, totalSize is going to be 0 for all files and then you await for the result of getSize, so in the end totalSize is going to be equal to the size of the last file that completes the getSize call.
To fix this, simply await the result of getSize first, and then add the result to totalSize using +=
- masklinn 4y ago> and where you're awaiting That is the sole source of the issue, and exactly what the comment you're replying to talks about. The problem is that `a += b` desugars to `a = a + b`, so if `b` is an await you get totalSize = totalSize + await file.getSize(); Since javascript evaluates left to right, it first evaluates `totalSize`, gets zero, then `file.getSize()`, then suspends waiting for the result... at which point the handler for the next file can run, doing the exact same thing, repeat for all files.