Лучший способ предотвратить состязание в нескольких вызовах API chrome.storage?
Что-то просит задачуЧто-то еще вытаскивает список задач из хранилища и проверяет, есть ли там задачи.Если есть задачи, он удаляет одну, а меньший «список задач» помещается обратно в хранилище.
Между шагами 2 и 3состояние гонки может возникнуть, если произойдет несколько запросов, и одна и та же задача будет выполнена дважды.
Правильно ли разрешено «блокировать» «таблицу задач» во время «извлечения» одной задачи, чтобы предотвратить любые другие запросы?
Какое решение с наименьшим влиянием на производительность, например, задержкой выполнения, и как его следует реализовать в javascript с помощью chrome.storage API?
Некоторый код например:
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 );
...
}
...
}