11
  1. 何かがタスクを要求します
  2. 他の何かがストレージからタスク リストを引き出し、そこにタスクがあるかどうかを確認します。
  3. タスクがある場合、1 つが削除され、小さい方の「タスク リスト」がストレージに戻されます。

ステップ 2 と 3 の間で、複数のリクエストが発生すると競合状態が発生する可能性があり、同じタスクが 2 回処理されます。

他のリクエストを防ぐために、単一のタスクが「チェックアウト」されている間に「タスクテーブル」を「ロック」する正しい解決策はありますか?

実行の遅延など、パフォーマンスへの影響が最も少ないソリューションは何ですか? chrome.storage API を使用して JavaScript でどのように実装する必要がありますか?

たとえば、いくつかのコード:

function decide_response ( ) {
    if(script.replay_type == "reissue") {
            function next_task( tasks ) {
                var no_tasks = (tasks.length == 0);
                if( no_tasks ) {
                    target_complete_responses.close_requester();
                }
                else {
                    var next_task = tasks.pop();
                    function notify_execute () {
                        target_complete_responses.notify_requester_execute( next_task );
                    }
                    setTable("tasks", tasks, notify_execute);
                }
            }
            getTable( "tasks", next_tasks );
    ...
    }
...
}
4

1 に答える 1