一. URL.createObjectURL() 静态方法会创建一个 DOMString
,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document
绑定。这个新的URL 对象表示指定的 File
对象或 Blob
对象。
objectURL = URL.createObjectURL(blob);在每次调用
createObjectURL()
方法时,都会创建一个新的 URL 对象,即使你已经用相同的对象作为参数创建过。当不再需要这些 URL 对象时,每个对象必须通过调用
URL.revokeObjectURL()
方法来释放。浏览器会在文档退出的时候自动释放它们,但是为了获得最佳性能和内存使用状况,你应该在安全的时机主动释放掉它们。
二.Blob
对象表示一个不可变、原始数据的类文件对象。
要从其他非blob对象和数据构造一个Blob
,请使用 Blob()
构造函数。要创建包含另一个blob数据的子集blob,请使用 slice()
方法。要获取用户文件系统上的文件对应的Blob
对象,请参阅 File
文档。
三.FileReader
对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File
或 Blob
对象指定要读取的文件或数据。
FileReader.abort()
中止读取操作。在返回时,
readyState
属性为
DONE
。
FileReader.readAsArrayBuffer()
开始读取指定的
Blob
中的内容, 一旦完成, result 属性中保存的将是被读取文件的
ArrayBuffer
数据对象.
FileReader.readAsBinaryString()
开始读取指定的
Blob
中的内容。一旦完成,
result
属性中将包含所读取文件的原始二进制数据。
FileReader.readAsDataURL()
开始读取指定的
Blob
中的内容。一旦完成,
result
属性中将包含一个
data:
URL格式的字符串以表示所读取文件的内容。
FileReader.readAsText()
开始读取指定的
Blob
中的内容。一旦完成,
result
属性中将包含一个字符串以表示所读取的文件内容。
so:
var
__worker_src__ =
function() {
/*子线程需要输入代码*/
onmessage =
function(
msg) {
console.
log(
msg.
data);
}
postMessage(
"ccc");
};
var
source =
'(' +
__worker_src__ +
')()';
var
blob =
new
Blob([
source]);
var
worker =
new
Worker(
window.
URL.
createObjectURL(
blob));
worker.
onmessage =
function(
e) {
console.
log(
e.
data)
}
function
goWorker() {
worker.
postMessage(
"bbb");
}