Я пишу очередь в JavaScript, которая будет обрабатываться несколькими «серверами» асинхронно. Я обеспокоен тем, что два сервера могут получить один и тот же элемент из очереди. Кажется, сейчас это не происходит, но я не хочу оставлять это на произвол. Насколько мне известно, JavaScript является однопоточным; позволяет ли предположить, что, хотя одновременно будет несколько запросов, JavaScript использует собственную очередь для выполнения функции?Управление очередью с несколькими асинхронными вызовами
function getJob() {
if(jobs.length > 0) {
var job = jobs.shift();
$('#jobStatsQueueCount').text(jobs.length);
return job;
} else {
return null;
}
}
Вот полный код:
Правда, но как насчет этого сценария: есть одна работа; сервер 1 определяет, что есть одно задание; сервер 2 определяет, что есть одно задание, сервер 1 получает задание, а затем сервер 2, уже прошедший проверку, терпит неудачу, потому что работа ушла. – scader
... или, вы говорите, что выполнение 2-го сервера сервера getJob произойдет не до завершения выполнения 1-го сервера? – scader
... или, если вы посмотрите на мой полный код, событие интервала любого сервера не будет выполняться до тех пор, пока JavaScript не завершит какое-либо событие интервала, уже выполняющееся. – scader