未捕获(承诺中)类型错误:window.indexedDB.databases 不是函数

问题描述 投票:0回答:1

第一次尝试这种功能,我尝试了多种方法,但无法弄清楚我做错了什么。我总是遇到未捕获的错误...为什么?

具体来说,我收到以下错误:

未捕获(承诺中)类型错误:window.indexedDB.databases 不是函数

function dbReady(dbName, callback) {
    if(typeof window !== "undefined") {
        (window.indexedDB.databases()).then(dbs => function(dbs) {
            const dbExists = dbs.map(db => db.name).includes(dbName);
            if(dbExists && typeof callback === 'function') { callback(dbExists); return dbExists;}
            else {throw new Error('databases() Failed:');}
        }).catch((e) => {
            console.error(e);
        });
    } else if(typeof callback === 'function') { callback(true);}
};

提前谢谢您! ...第一次在这里发帖...如果这说明了我的挫败程度:)

我尝试了使用 .then() 与 try / catch 与 wait 的各种方法...我真的不知道我在做什么,所以只是尝试我在这个网站上遇到的内容,其他人试图解决类似的问题情况。

javascript indexeddb
1个回答
0
投票

错误发生在

(window.indexedDB.databases())

它不会被 catch 捕获,因为它不是被抛出到 Promise 中,而是被抛出到创建 Promise 本身的调用中。您可以执行 null 检查或用 try-catch 包围整个函数体

© www.soinside.com 2019 - 2024. All rights reserved.