hash.js 552 B

12345678910111213141516171819
  1. // web-worker
  2. self.importScripts('spark-md5.min.js')
  3. self.onmessage = async e => {
  4. const { chunks } = e.data
  5. calculate(chunks)
  6. }
  7. async function calculate (chunks) {
  8. const spark = new self.SparkMD5.ArrayBuffer()
  9. const total = chunks.length
  10. const appendToSpark = blob => blob.arrayBuffer().then(arrayBuffer => spark.append(arrayBuffer))
  11. self.postMessage({ index: 0, total })
  12. for (let i = 0; i < total; i++) {
  13. await appendToSpark(chunks[i].raw)
  14. self.postMessage({ index: i, total })
  15. }
  16. self.postMessage({ hash: spark.end() })
  17. }