在Javascript中是否存在原子测试和设置,信号量或锁定这样的事情?Javascript信号量/测试和设置/锁?
我有通过自定义协议的JavaScript调用异步后台进程(后台进程字面上运行在单独的进程,无关的浏览器)。我相信我正处于竞赛状态;后台进程在我的测试和我的设置之间返回,在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(“something”)。
任何想法?
您可能想详细说明“流程”更详细。这是服务器端的JavaScript? – 2009-02-17 01:13:25
Javascript代码总是原子的,所以不需要锁定或任何东西。请参阅[为什么我们没有JavaScript中的并发控制工具?](http://uzairfarooq.github.io/why-no-concurrency-control-tool-in-javascript/)。 – 2015-07-17 17:13:06