0

我对这段代码有疑问。

function checklistAntesdesalirUsuario() {

if (plataforma == plataformaW8) {
    while (db == null)
        db = abrirDB();

    var transactionUsuario = db.transaction(storeCLAntesDeSalirUsuarioNombre, "readonly");
    var transaction = db.transaction(storeCLAntesDeSalirNombre, "readonly");

    var objectStoreAntesDeSalirUsuario = transactionUsuario.objectStore(storeCLAntesDeSalirUsuarioNombre);
    var objectStoreAntesDeSalir = transaction.objectStore(storeCLAntesDeSalirNombre);

    var requestUsuario = objectStoreAntesDeSalirUsuario.openCursor();
    var request = objectStoreAntesDeSalir.openCursor();

    var cursor;
    var cursorUsuario;
    var count = 0;
    var i = 0;
    var cargadoUsuarios = false;

    var queryChecklistAntesdesalirUsuario = new Array();

    request.onsuccess = function (evt)
    {
        cursor = evt.target.result;
        seguir();
    };

    request.onerror = function(evt)
    {
        console.log("ERROR!");
    }
    requestUsuario.onsuccess = function (evt2)
    {
        cursorUsuario = evt2.target.result;
        cargadoUsuarios = true;
        seguir();
    };
    requestUsuario.onerror = function(evt)
    {
        console.log("ERROR!");
    }

    function seguir()
    {
        if (!cursor || !cargadoUsuarios)
         return;

        if (cursorUsuario && cursor.value.id_check == cursorUsuario.value.id_check) {

            cursorUsuario.continue();
        }
        else  {
            cursor.continue();
        }

        if (cursor && cursorUsuario && cursor.value.id_check == cursorUsuario.value.id_check) {
            var antesdesalir = new CLFinal(cursor.value.id_check, cursor.value.descripcioncheck, cursorUsuario.value.tarearealizada);
            queryChecklistAntesdesalirUsuario[i] = antesdesalir;
            i++;
            pintarListaChecklistAntesdesalirUsuario(queryChecklistAntesdesalirUsuario);
        }
    }
}

我正在尝试从 2 个存储中获取数据。有时“光标”获取数据,当“cursor.continue()”执行时可以,但其他时候它会崩溃。

我不知道该怎么办...

谁能帮我?谢谢!

4

1 回答 1

0

你能解释一下你想要完成什么吗?

为什么要进行 2 次交易?你可以用一个做任何事情。只需在范围内打开两个对象存储的事务即可。

为什么是 2 个游标?您可以只使用一个并使用 get 在第二个对象存储中检索您想要的值。您可以在主键上执行此操作或使用索引

var transaction = db.transaction([storeCLAntesDeSalirUsuarioNombre, storeCLAntesDeSalirNombre], "readonly");

var objectStoreAntesDeSalirUsuario = transaction.objectStore(storeCLAntesDeSalirUsuarioNombre);
var objectStoreAntesDeSalir = transaction.objectStore(storeCLAntesDeSalirNombre);
于 2013-10-16T09:48:36.233 回答