Najlepszy sposób na uniknięcie sytuacji wyścigu w wielu wywołaniach API chrome.storage?

Coś wymaga zadaniaCoś innego wyciąga listę zadań z pamięci i sprawdza, czy są tam zadania.Jeśli są zadania, usuwa jedną, a mniejsza „lista zadań” jest umieszczana z powrotem w pamięci.

Między krokami 2 i 3 awarunki wyścigu może wystąpić, jeśli wystąpi wiele żądań, a to samo zadanie zostanie doręczone dwukrotnie.

Czy prawidłowa rozdzielczość „blokuje” „tabelę zadań”, gdy jedno zadanie jest „wyrejestrowane”, aby zapobiec innym żądaniom?

Jakie jest rozwiązanie o najmniejszym wpływie na wydajność, takie jak opóźnienie wykonania i jak powinno zostać zaimplementowane w javascript z API chrome.storage?

Niektóre kody, na przykład:

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 );
    ...
    }
...
}

questionAnswers(1)

yourAnswerToTheQuestion