Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应本地存储和服务人员(在重新联机时发送数据_Javascript_Reactjs_Local Storage_Service Worker - Fatal编程技术网

Javascript 反应本地存储和服务人员(在重新联机时发送数据

Javascript 反应本地存储和服务人员(在重新联机时发送数据,javascript,reactjs,local-storage,service-worker,Javascript,Reactjs,Local Storage,Service Worker,当我重新联机时,我正在尝试与Service Worker一起发送存储在本地存储中的数据。如果可能,请不要使用IndexedDB 我曾多次读到,本地存储无法与服务人员一起工作,因此,一旦完成internet识别,我就无法恢复数据以发送它。这是否正确?我如何测试我的解决方案?我有点不知所措(而且还没有反应过来) 谢谢!没错,服务人员上下文无权访问localStorage。因此,如果在React代码中将某些内容保存到localStorage中,服务人员将无法访问它 对于“如何处理用户脱机时启动的HTT

当我重新联机时,我正在尝试与Service Worker一起发送存储在本地存储中的数据。如果可能,请不要使用IndexedDB

我曾多次读到,本地存储无法与服务人员一起工作,因此,一旦完成internet识别,我就无法恢复数据以发送它。这是否正确?我如何测试我的解决方案?我有点不知所措(而且还没有反应过来)


谢谢!

没错,服务人员上下文无权访问localStorage。因此,如果在React代码中将某些内容保存到localStorage中,服务人员将无法访问它

对于“如何处理用户脱机时启动的HTTP POST”问题,有两种不同的方法:

  • 在应用程序(React)代码中没有Service Worker。在向服务器发送帖子之前,在代码中只需检查
    navigator.onLine
    。如果为真,则用户在线,您可以发送帖子。如果为假,则保留帖子请求(或内容、数据、正文)在一个变量中,选择so或将其保存到localStorage;为
    online
    事件添加一个事件侦听器,并在事件侦听器启动时发布。此方法与服务人员无关。所有逻辑都在应用程序代码中

  • 与服务人员合作。编写应用程序代码时不必检查
    导航器。联机
    ,它根本不需要关心这一点。在实际发生时(当用户提交表单时)发布您的帖子。现在,在Service Worker中,附加网络事件的侦听器,并将其保存在IndexedDB或缓存中,以便在连接脱机时稍后使用。再次联机时,从Service Worker发出请求

  • 这些方法在不同的地方实现逻辑。首先,在应用程序逻辑中实现所有功能。第二种方法使其对应用程序透明,而不是在软件中处理所有功能。这实际上没有正确的方法,完全取决于应用程序的需要。在这两种情况下,您可能应该在告诉我发生了什么

    对于Service Worker方法,您可以使用Workbox后台同步,更多信息请参见:

    还值得注意的是,在第一种方法中,如果用户关闭浏览器/离开应用程序,POST不会发送到服务器。在SW方法中,即使用户关闭了浏览器/应用程序,也可以在连接恢复联机后使用SW和后台同步重试请求