Многопоточный JavaScript как? - PullRequest
9 голосов
/ 27 января 2010

Есть ли идея (библиотека или методология) для создания многопоточных приложений на JavaScript?

Ответы [ 5 ]

7 голосов
/ 27 января 2010

Самое близкое, что вам нужно - это веб-работники (только в FF 3.5 / HTML5). Проверьте это - http://www.whatwg.org/specs/web-workers/current-work/

4 голосов
/ 27 января 2010

JavaScript на самом деле не поддерживает многопоточность , и программист JavaScript ничего не может сделать, чтобы изменить это.

Однако мы можем симулировать многопоточность. Пожалуйста, просмотрите эту статью также.

И есть PDF-ссылка на Многопоточная структура JavaScript для асинхронной обработки диссертация

1 голос
/ 27 января 2010

Другая симуляция потоков, которую я нашел достаточно стабильной, - это использование изображения. Который, кажется, загружается в другой поток в браузере (?). Однако ваш обратный вызов javascript будет работать всегда последовательно.

Здесь ниже загружено 500 из них.

<html>
<head>
   <title>so</title>
    <style></style>
</head>
<script>
    function callBack(img){
        var i = 0, img, res = document.getElementById('res'),
            fn = function(cnt){
                var img = document.createElement('img');
                img.onerror = function(ev){
                    res.innerHTML += cnt + ', ';
                    document.body.removeChild(img);
                };
                img.src = 'javascript:void(0)';
                document.body.appendChild(img);
            };
        do{
            fn(i++);
        }while(i<500);
    }
</script>
<body onload="callBack()">
    <div id="res"></div>
</body>
</html>
0 голосов
/ 16 сентября 2016

веб-работников

Вы можете использовать Web Workers для создания фоновых потоков

Веб-работники предоставляют веб-контенту простые средства для запуска сценариев в фоновых потоках. Рабочий поток может выполнять задачи без вмешательства в пользовательский интерфейс. Кроме того, они могут выполнять ввод-вывод с использованием XMLHttpRequest (хотя атрибуты responseXML и channel всегда имеют значение null). После создания работник может отправлять сообщения в код JavaScript, который его создал, публикуя сообщения в обработчике событий, указанном в этом коде (и наоборот). В этой статье подробно описывается использование веб-работников.

Совместимость с браузерами

Хром: 4

Firefox (Gecko): 3,5

Internet Explorer: 10,0

Опера: 10,6

Safari (WebKit): 4

0 голосов
/ 27 января 2010

JavaScript - это динамический язык программирования, который можно использовать для разных целей. Если он не используется в браузере, вы можете полностью полагаться на такие вещи, как несколько потоков, циклы событий и т. Д. Вам следует проверить node.js .

К сожалению, браузер предоставляет вам только строгий набор функций языка.

...