- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
505 :デフォルトの名無しさん[sage]:2016/08/21(日) 20:31:06.26 ID:sjfW/TwQ - まあFileReaderはもう過去のものだけどね。
(昔) fr = new FileReader fr.onload = () => console.log(fr.result) fr.readAsText(file) (今) new Response(file).text().then(res => console.log(res)) でも大きなデータの時は実質これは使えない。 Streamを使えば外部ファイルの全データの到着を待たず、 もしくは内部ファイルの全テータを展開せずに利用することができる。 それをrequestIdleCallbackでreadしながらTextDecoderで貯めていくのがベスト。
|
- + JavaScript の質問用スレッド vol.121 + [無断転載禁止]©2ch.net
509 :デフォルトの名無しさん[sage]:2016/08/21(日) 23:05:11.25 ID:sjfW/TwQ - >>506
FileReaderだと大前提としてFileでないといけない、fileとして読み込みが完了するのを待たないといけない。 文字列が欲しいにしろABが欲しいにしろ、FRを使うときは部分をすぐにでも欲しい場合が多い。 そうでないのなら、(fetchする場合)最初からテキストとして読み込んだり、既存のメディアタグで再生させればいいだけだからね。 もちろんローカルの小さなテキストファイルをDnDして表示する程度にStreamを使うのは大袈裟。 でも多くの場合にはStreamで得るのがファイルの読込中から随時読み出せるので結果最も早いし効率的。 fileを作ること無くストリーミングで処理もできるので理論的には馬鹿でかい外部ファイルでも容易に扱える。 一方すでにfileとして取得した内部ファイルの場合、現在の実装では残念ながらnew Response(file).body......とかやっても省メモリにはならない。 現状では巨大ファイルを扱うのにはslice必須。将来の最適化に期待。 RICの件はbyob modeと合わせればdefaultでread任せにするより複数の意味で効率的なはずだ。 まあそこまで大袈裟にしなくともread任せで十分だろうが。 Workerはどうだろうね。結局メインに送るようじゃ効率的とは言えない。 まあWorkerでできることというか、いろいろできるWorkerが増えてるから案外アレなのかもしれない。
|
- JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net
362 :デフォルトの名無しさん[sage]:2016/08/21(日) 23:35:23.04 ID:sjfW/TwQ - トランザクションはversionchange全体で1つ
|