forked from dexie/Dexie.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworker.js
27 lines (26 loc) · 879 Bytes
/
worker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
onmessage = function (e) {
var imports = e.data.imports || [];
var code = e.data.code;
if (imports.length > 0)
importScripts.apply(self, imports);
var pCodeBegin = code.indexOf('{'),
pCodeEnd = code.lastIndexOf('}');
if (pCodeBegin === -1 || pCodeEnd === -1) {
postMessage(["ok", false, "Worker.js error: Provided code must be (a Function).toString()"]);
postMessage(["done"]);
return;
}
try {
code = code.substring(pCodeBegin + 1, pCodeEnd);
new Function("ok", "done", code)(function ok(b, msg) {
postMessage(["ok", b, msg]);
}, function() {
postMessage(["done"]);
});
} catch (ex) {
postMessage(["ok", false, "Worker error: " + ex.toString() + (ex.stack ? "\n" + ex.stack : "")]);
postMessage(["done"]);
return;
}
}