| 1 | /** |
| 2 | * @param {Promise<IDBDatabase>} bd |
| 3 | * @param {string[]} entidades |
| 4 | * @param {(t:IDBTransaction) => void} operaciones |
| 5 | */ |
| 6 | export async function bdEjecuta(bd, entidades, operaciones) { |
| 7 | |
| 8 | // Espera que se abra la bd |
| 9 | const base = await bd |
| 10 | |
| 11 | return new Promise( |
| 12 | (resolve, reject) => { |
| 13 | // Inicia una transacción de lectura y escritura. |
| 14 | const transaccion = base.transaction(entidades, "readwrite") |
| 15 | // Al terminar con éxito, ejecuta la función resolve. |
| 16 | transaccion.oncomplete = resolve |
| 17 | // Al terminar con error, ejecuta la función reject. |
| 18 | transaccion.onerror = () => reject(transaccion.error) |
| 19 | // Estas son las operaciones de la transacción. |
| 20 | operaciones(transaccion) |
| 21 | }) |
| 22 | |
| 23 | } |