Как удалить indexeddb и firebaseLocalStorage - PullRequest
1 голос
/ 27 апреля 2020

Я хочу очистить indexeddb на моем сайте. Как я могу решить это.

function deleteAllData() {
  window.alert('Delete Sucessful');
  const dbs = await window.indexedDB.databases();
  dbs.forEach(db => { window.indexedDB.deleteDatabase(db.name) });
  console.log(dbs);
}

1 Ответ

1 голос
/ 27 апреля 2020

indexedDB.databases() - это обещание, вы должны дождаться его завершения, прежде чем продолжить.

Аналогично, db.deleteDatabase() немедленно возвращает объект IDBOpenDBRequest и выполняет операцию удаления асинхронно. Вам следует дождаться успешного обратного вызова запроса, чтобы убедиться, что удаление БД завершено, что-то вроде

async function deleteAllData() {
  const dbs = await indexedDB.databases()
  await Promise.all(
    dbs.map(db => new Promise(
      (resolve, reject) => {
        const request = indexedDB.deleteDatabase(db.name)
        request.onsuccess = resolve
        request.onerror = reject
      }
    ))
  )
  window.alert('Delete Sucessful');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...