Показать сообщение отдельно
  #8 (permalink)  
Старый 06.03.2016, 01:12
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

function getWorker() {
    var blob;
    window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
    var mimeString = 'application/javascript';
    var code = "onmessage = function(e) { \
     var callback = Function('return ' + e.data[0])();\
     postMessage(callback.apply(this, e.data[1])); }";
    try {
        blob = new Blob([code], {type: mimeString});
    } catch (e) {
        var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
            window.MozBlobBuilder || window.MSBlobBuilder;
        var bb = new BlobBuilder();
        bb.append(code);
        blob = bb.getBlob(mimeString);
    }
    var url = window.URL.createObjectURL(blob);
    var worker = new Worker(url);
    URL.revokeObjectURL(url);
    return worker;
}
function test(a, b) {
    var result = 0;
    for (; a < b; a += 1) result += a;
    return result;
}

var worker = getWorker();
worker.postMessage([test.toString(), [1, 99999]]);
worker.onmessage = function (e) { alert(e.data);};

worker сами по себе интересная штука. можно и динамически запускать
P.S. Где-то я ошибся для Ie, Edge

Последний раз редактировалось Vlasenko Fedor, 06.03.2016 в 01:48.
Ответить с цитированием