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