同步事件将结果传递给应用程序或侦听数据库事件

sync event pass results to application or listen for db events

我的申请流程如下:

  1. 在页面设置一些数据并提交[app]
  2. 在 indexeddb 中保存数据并触发同步事件 [app]
  3. 从 indexeddb 检索数据并将它们发送到服务器 [service-worker]
  4. 在 indexeddb 中保存响应 [service-worker]
  5. 从 indexeddb 检索响应并发布以查看 [app]

流程对我有用,但我对解决第 5 点的方式不满意。此刻,在解雇 service worker 后,在下一行应用程序代码中我解雇了 setInterval定期检查 responses table .

中是否有新行的方法

有没有什么方法可以将事件从 service-worker sync 发送到应用程序,让它知道数据正在等待它?

或者 indexeddb 上有一个事件,我可以订阅它来监听变化?

您应该能够在 ServiceWorker 和您的应用程序之间设置消息通道。从高层看,从应用程序到 ServiceWorker 的通信将发生在通道的一个端口上,而从 ServiceWorker 返回到应用程序的通信将发生在通道的另一个端口上。您的 ServiceWorker 应该能够通知您的应用响应已成功保存,而不是轮询更新的数据。

偶然发现了这个博客 post,它应该能够让您朝着正确的方向开始:https://ponyfoo.com/articles/serviceworker-messagechannel-postmessage