gpt4 book ai didi

javascript - IndexedDB:未捕获( promise )DOMException

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:35 26 4
gpt4 key购买 nike

我正在使用 indexedDB(通过 npm 的 idb 包装器)来存储表示音频 channel 数据的 2D Float32 数组。它在一段时间内工作正常,但是,当其中一个数组的长度达到大约 16658432 时,idb 崩溃并出现标题中的异常。堆栈跟踪是非常无用的,因为我将 React 与 Next.js 结合使用,但是从我发现的内容来看,它似乎在 idb 的缓存部分崩溃了。注意:我可以存储多个大数组没问题,但是一旦其中任何一个超过这个“限制”,一切都会崩溃

这是我必须处理的限制,还是可以通过某种方式解决?我可能会将 2D 数组拆分为两个数组并将它们存储为单独的条目,但这是一个不太理想的解决方案,一旦它们也增长,这将导致同样的问题。

只是一个简单的 idb 交易包装器:

export const asyncPut = async (
dbName: string,
tableName: string,
key: string,
value: any // [Float32Array, Float32Array]
): Promise<void> => {
try {
const db = await asyncOpenDb(dbName, tableName);
const transaction = db.transaction(tableName, "readwrite");
await transaction.objectStore(tableName).put(value, key);
} catch (error) {
// I catch the error here
console.error("**IDB Error:", error);
}
};

最佳答案

我刚刚在 Chrome 中对此进行了测试,他们可能已经改进了您测试后的错误。

我尝试插入这个数组时遇到的错误:

ar = new Array(16658432).fill(1)

是否超出了单个对象的最大尺寸:

target: IDBRequest
error: DOMException
code: 0
message: "The serialized keys and/or value are too large (size=515354750 bytes, max=133169152 bytes)."
name: "UnknownError"
__proto__: DOMException

测试于:

  • 谷歌浏览器
  • 版本 76.0.3809.100(正式版)(64 位)

关于javascript - IndexedDB:未捕获( promise )DOMException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com