JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://rawgit.com/dfahlander/Dexie.js/master/src/Dexie.js"></script>
JavaScript
// CONFIGURACOES DA DB //
var db = new Dexie('teste');
db.version(1).stores({
sequences: '++id,of'
});
db.open().
catch ();
// CONFIGURACOES DA DB //
var executionOrder = [];
// isso foi o exemplo mais pratico que encontrei.. é um exemplo em que o servidor envia 4 mensagens (ou mais) seguidas e ao "mesmo tempo", ele nao checa se há algo sendo executado, no caso se houvesse ele deveria esperar até o fim para enviar a nova requisiçao
// NOVO: adiciona um
// APAGA: deleta todos
// A INTENÇAO AQUI E QUE: ELE NAO VA PARA PROXIMA FUNCAO SEM TER EXECUTADO TUDO QUE ´E NECESSARIO.
// Neste caso ele deve: CRIAR UM NOVO
// CRIAR UM NOVO
// APAGAR OS DOIS CRIADOS ACIMA (TUDO)
// CRIAR UM NOVO
// APAGAR O ULTIMO CRIADO (TUDO)
// tudo isso 2 vezes, porém em ordem sem agrupar nem alterar a ordem de execuçao
setInterval(function () {
var newOrder = ['NOVO', 'NOVO', 'APAGA', 'NOVO', 'APAGA'].reverse();
executionOrder = executionOrder.concat(newOrder);
callback();
}, 4000);
setInterval(function () {
var newOrder = ['NOVO', 'NOVO', 'APAGA', 'NOVO', 'APAGA'].reverse();
executionOrder = executionOrder.concat(newOrder);
callback();
}, 4000);
function execute(req) {
if (req == 'NOVO') {
db.sequences.add({
of: '0'
});
console.log('ADD 1');
callback();
} else if (req == 'APAGA') {
db.sequences.where("of").equalsIgnoreCase('0').each(function (seq) {
db.sequences.delete(seq.id);
}).then(function () {
console.log('DEL ALL');
callback();
});
}
};
function callback() {
if (executionOrder.length) {
var next = executionOrder.pop();
execute(next);
}
}