Добавляем...


Потоковая обработка
Поток - это "нить" выполнения в операционной системе. Программный код, вы-полняемый в рамках потока, в каждый момент времени может делать только одно дей-ствие, а чтобы обеспечить параллельную обработку данных, приложению нужно быть многопотоковым (т.е., способным выполнять множество потоков инструкций одно-временно).

Как правило, интерпретаторы JavaScript являются однопотоковыми и часто в качестве совместного ресурса используют UI-поток браузера. Это значит, что, когда JavaScript выполняет какое-то действие, никакого другого действия не может выполнять не только JavaScript, но и браузер (например, реагировать на такие события поль-зователя, как движение указателя мыши или щелчки на кнопках). По этой причине никогда не "блокируйте" свой программный код JavaScript путем ожидания выполнения определенных условий.

Например, в предыдущем примере вместо использования таймеров для проверки завершения обработки запроса можно было бы использовать функцию readResponse() следующего вида:

function readResponse()
{
// Ждать, пока загрузится изображение...
while (!currentRequest.complete); // не делать ничего
if (currentRequest.height == 1)
alert("Пользователь недоступен");
else
alert("Пользователь в сети");
}

Такая "привязка" к значению currentRequest.complete оказывается очень неудачной идеей. В этом случае не только будут блокированы любые действия пользователя, пока не завершится загрузка изображения, но и возникнет риск полного блокирования браузера, если загрузка изображения по каким-то причинам завершится неудачей. Если значение currentRequest. complete никогда не окажется равным true, система "застрянет" в бесконечном цикле, пока недовольный пользователь не попытается взять управление в свои руки.
Если первым правилом правильной организации RPC-вызовов в JavaScript является учет возможности долгого ожидания ответа, то вторым правилом должно быть использование таймеров или функций обратного,вызова для того, чтобы сигнализировать о таких событиях, как завершение обработки вызова.
назад:
далее:


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика