Семафор javascript / проверка и установка / блокировка?
Прежде всего, хотя то, что .js javaScript является однопоточным, верно, Неверно, что .js для приложения javaScript javascript никогда не требуется никакого .js механизма сериализации.
Простой concurrency-violation пример: кнопка отправки должна semaphores исчезнуть в течение определенного concurrent-programming периода времени, в течение semaphores которого выполняется запрос js Ajax к серверу. Когда асинхронный ecmascript запрос Ajax успешно завершится, сообщение concurrency должно появиться там, где concurrency-violation раньше была кнопка.
Хотя было semaphore бы неплохо иметь возможность .js отменить постепенное исчезновение javascript-library кнопки и просто установить js для нее стиль «display: none», как concurrent только запрос Ajax завершится, это javascript невозможно в jQuery. Кроме concurrent-programming того, решение может использовать js события для синхронизации javascript двух одновременных действий, но js для простой проблемы это, по javascript-library сути, излишне.
Низкотехнологичное semaphore решение - опросить блокировку, и js когда исчезновение завершится, она semaphores разблокируется, но сообщение semaphore "сервер готов" НЕ отображается ecmascript до тех пор, пока не будет concurrency выполнен обратный вызов успеха, установленный js $ .post.
var gl_lock;
var gl_selfID;
function poll_lock(message) {
if (gl_lock === 0) {
$('#output').text(message).fadeIn(200);
window.clearInterval(gl_selfID);
}
} // end of poll_lock
function worker() {
// no one gets in or out
gl_lock = 1;
$.post(..., data,function() {
gl_selfID = window.setInterval(poll_lock, 40, data.message);
}, "json");
// end of fadeout unlock the semaphore
$('#submit-button').fadeOut(400, function() { gl_lock = 0; });
} // end of worker
Наконец, я думаю, что concurrent это более подробный ответ, аналогичный javascript-library тем, которые ранее предлагались concurency в этом обсуждении perrohunter.
javascript
concurrency
semaphore
Семафор javascript / проверка и установка / блокировка?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.