アトミックなテスト アンド セット、セマフォ、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.call("something") を行います。
何か案は?