我目前正在研究一款將作爲打包(桌面)Chrome應用運行的計算器。我正在使用math.js庫來解析數學輸入。這是我的舊代碼:在Chrome瀏覽器中解析原始輸入的網絡工作者打包計算器應用
evaluate.js:
var parser = math.parser();
function evaluate(input){
$("#output").text(parser.eval(input));
}
然而,如果輸入的是不合理的東西像6234523412368492857483928!
,應用程序只是凍結,因爲它正試圖評估輸入。我知道math.js
仍處於測試階段,所以最終可能會出現修復(溢出錯誤),但是我找不到任何其他庫以math.js
的方式解析原始輸入。
要解決這個問題,我試圖解決這個問題,使用網絡工作者異步運行它。這裏是我現在所擁有的代碼:
main.js
var evaluator = new Worker('evaluate.js');
evaluator.addEventListener('message', function(e){
$("#output").text(e.data);
}, false);
function evaluate(input){
evaluator.postMessage(input);
}
evaluate.js
var parser = math.parser();
function mathEval(input){
return parser.eval(input);
}
self.addEventListener('message', function(e){
self.postMessage(mathEval(e.data));
});
然而,這不工作時我運行它。另外,我注意到當我使用網絡工作者時,它會拋出錯誤Uncaught ReferenceError: math is not defined - evaluate.js:1
,但它並沒有將這個錯誤與舊代碼一起拋出。
問題:爲什麼這段代碼不工作來評估輸入?是否有可能使用多個工作人員加快速度?如果我想在工作時間超過2秒時實現某種溢出錯誤,那麼最好的方法是什麼?最後,有沒有更好的方法來做到這一點?
如何將Chrome API功能(例如chrome.storage)導入到工作人員? – shlatchz
你不能=)http://stackoverflow.com/questions/21216481/how-can-i-access-chrome-history-from-a-web-worker – jusio