gpt4 book ai didi

javascript - 如何实现由 indexeddb 或 localstorage 支持的基于浏览器的队列?

转载 作者:行者123 更新时间:2023-12-04 12:26:15 25 4
gpt4 key购买 nike

我正在寻找一种基于浏览器的队列数据结构,由可在 JS 中使用的持久存储(localStorage 或 indexeddb)支持。

我的用例是一个离线应用程序,一旦它重新上线,它应该使用队列与服务器通信。

即,像 rails delay_job 或 resque 之类的东西,但用于浏览器。

它将支持这样的 API:

Queue.Enqueue(() => { // do something  })

队列将 dequeu 执行函数(在后台,如 webworker 或希望的东西)并定期轮询新条目。

我将如何实现这一点?

最佳答案

我也有同样的需要。

起初,我想实现由 WebSQL 存储支持的持久队列,但后来我看到 W3C 正在停止使用 WebSQL 标准:

https://www.w3.org/TR/webdatabase/

最后,我使用 IndexedDB 存储实现了它。我使用自动增量 key 生成器创建了一个对象存储,因此我可以简单地将项目添加到队列调用中:

objectStore.add(item)

您可以让光标遍历所有队列项目,只需执行以下操作:
objectStore.openCursor()

默认情况下,光标按键的递增顺序迭代元素。由于键在插入时自动递增,因此我们以 FIFO 顺序获取项目。

您可以在此处找到有关索引数据库的更多信息:

https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB

关于javascript - 如何实现由 indexeddb 或 localstorage 支持的基于浏览器的队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41749598/

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