Есть ли такая вещь, как атомный тест-набор, семафор или блокировка в Javascript?
У меня есть javascript, вызывающий фоновые процессы async через собственный протокол (фоновый процесс буквально запускается в отдельном процессе, не связанный с браузером). Я верю, что я столкнулся с гоночным состоянием; фоновый процесс возвращается между моим тестом и моим набором, закручивая вещи на стороне javascript. Мне нужна тестовая операция, чтобы сделать ее настоящим семафором.
Вот код javascript, который пытается обнаружить фоновые процессы и поставить их в очередь:
Call = function () {
var isRunning = true,
queue = [];
return {
// myPublicProperty: "something",
call: function (method) {
if (isRunning) {
console.log("Busy, pushing " + method);
queue.push(method);
} else {
isRunning = true;
objccall(method);
}
},
done: function() {
isRunning = false;
if (queue.length > 0) {
Call.call(queue.shift());
}
}
};
}();
Звонок - это синглтон, который реализует очередность; любой, кто хочет вызвать внешний процесс, вызывает Call.call( "что-то" ).
Любые идеи?