JavaScript и темы - PullRequest
       93

JavaScript и темы

124 голосов
/ 27 августа 2008

Есть ли способ сделать многопоточность в JavaScript?

Ответы [ 13 ]

3 голосов
/ 27 августа 2008

В необработанном Javascript лучшее, что вы можете сделать, - это использовать несколько асинхронных вызовов (xmlhttprequest), но на самом деле это не многопоточность и не очень ограничено. Google Gears добавляет в браузер ряд API, некоторые из которых можно использовать для поддержки многопоточности.

1 голос
/ 30 октября 2016

В Javascript нет потоков, но у нас есть рабочие.

Рабочие могут быть хорошим выбором, если вам не нужны общие объекты.

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

Я разработал библиотеку под названием task.js , которая делает это очень простым.

task.js Упрощенный интерфейс для выполнения кода с интенсивным использованием процессора для всех ядер (node.js и web)

Примером будет

function blocking (exampleArgument) {
    // block thread
}

// turn blocking pure function into a worker task
const blockingAsync = task.wrap(blocking);

// run task on a autoscaling worker pool
blockingAsync('exampleArgumentValue').then(result => {
    // do something with result
});
0 голосов
/ 16 ноября 2016

С HTML5 спецификацией вам не нужно писать слишком много JS для того же самого или находить некоторые хаки.

Одной из функций, представленных в HTML5, является Web Workers - это JavaScript, работающий в фоновом режиме, независимо от других скриптов, не влияющий на производительность страницы.

Поддерживается практически во всех браузерах:

Chrome - 4.0+

IE - 10,0 +

Mozilla - 3,5 +

Safari - 4.0 +

Опера - 11,5 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...