diff --git a/examples/browser/webworkers/webworkers.html b/examples/browser/webworkers/webworkers.html new file mode 100644 index 000000000..ac949c182 --- /dev/null +++ b/examples/browser/webworkers/webworkers.html @@ -0,0 +1,79 @@ + + +
++ In this example, a math.js parser is running in a separate + web worker, + preventing the user interface from freezing during heavy calculations. +
+ + + + + + + \ No newline at end of file diff --git a/examples/browser/webworkers/worker.js b/examples/browser/webworkers/worker.js new file mode 100644 index 000000000..48c5e447f --- /dev/null +++ b/examples/browser/webworkers/worker.js @@ -0,0 +1,31 @@ +importScripts('../../../dist/math.js'); + +// create an instance of math.js and create a parser +var math = mathjs(), + parser = math.parser(); + +self.addEventListener('message', function(event) { + var request = JSON.parse(event.data), + result = null, + err = null; + + try { + // evaluate the expression + result = parser.eval(request.expr); + } + catch (e) { + // return the error + err = e; + } + + // build a response + var response = { + id: request.id, + result: result, + err: err + }; + + // send the response back + self.postMessage(JSON.stringify(response)); + +}, false); \ No newline at end of file