hdjs
Version:
hdjs framework
68 lines (54 loc) • 1.52 kB
JavaScript
// 此文件在worker环境下运行。
importScripts('md5.js');
var fr = new FileReader();
var Md5File = (function() {
/*var throttle = 3,
pool = [],
wating = [];
function _tick() {
var avaibles = [],
i, fr, cb;
for ( i = 0; i < throttle; i++ ) {
fr = pool[ i ];
fr && fr.readyState === 2 && avaibles.push( fr );
}
while ( avaibles.length && wating.length ) {
fr = avaibles.shift();
cb = wating.shift();
fr.onload = fr.onerror = null;
cb( fr );
fr.onloadend = _tick;
}
}
function getReader( cb ) {
var fr;
if ( pool.length < throttle ) {
fr = new FileReader();
pool.push( fr );
cb( fr );
fr.onloadend = _tick;
return;
}
wating.push( cb );
_tick();
}*/
return function( file, cb ) {
var reader = new FileReader();
reader.onload = function() {
cb( md5( this.result ) );
reader.onload = reader.onerror = null;
reader.readAsBinaryString( new Blob() );
reader = null;
};
reader.onerror = function( e ) {
reader = reader.onload = reader.onerror = null;
};
reader.readAsBinaryString( file );
}
})();
onmessage = function( e ) {
var file = e.data;
Md5File( file, function( ret ) {
postMessage( ret );
});
}