当前位置: 首页 > news >正文

域名备案网站服务内容简单网页制作模板图片

域名备案网站服务内容,简单网页制作模板图片,谷歌找网站后台,谷德设计网gooood前言 当我们在一些地下停车场#xff0c;或者在火车上、电梯等无法避免的信号不稳定的场所#xff0c;使用网站应用处理一些表单操作或者上传数据的操作时#xff0c;面临的将是网络连接错误的响应#xff0c;使用户的操作白费。 而此刻 PWA 的 Sync API 就很好的解决了这…前言 当我们在一些地下停车场或者在火车上、电梯等无法避免的信号不稳定的场所使用网站应用处理一些表单操作或者上传数据的操作时面临的将是网络连接错误的响应使用户的操作白费。 而此刻 PWA 的 Sync API 就很好的解决了这个问题让用户处理一些数据上传的操作时无需关系网络环境所有相关操作均会完成。Sync API 也是 PWA 离线里面的重要一环下面就说一块。 SyncManager API SyncManager 接口提供了用于注册和获取 Sync 注册的接口。Sync 是一个简单且非常实用的功能。 通过 ServiceWorkerRegistration 接口的 sync 进行获取 navigator.serviceWorker.ready.then(reg {console.log(reg.sync) })方法 SyncManager.register 用于注册一个 sync tagtag 按照自己的需求设置。 语法 SyncManager.register(DOMString tag).then(function(void) { ... })返回 void 的 Promise。 SyncManager.getTags 用于获取已注册且未完成的 sync tag完成后的 sync tag 会自动从此列表中删除。 语法 SyncManager.getTags().then(function(tags[]) { ... })返回注册 syn tag 的字符串数组的 Promise。 事件 onsync 注册后的 Sync tag 会触发 ServiceWorkerGlobalScope 下的 onsync 事件。 此事件值包含两个属性 tag返回触发此次事件的注册 Sync tag 的 tag 值。lastChance如果浏览器在尝试多次后还未成功当 lastChance 为 true 时表示不再尝试且此次 sync tag 删除。 流程 从注册一个 Sync tag 到这个 Sync tag 完成会经历三个阶段 Registered sync注册 sync。Dispatched sync event发出 sync 事件。Sync completedSync 完成。 SyncManager.register(tag) 后会立即注册 sync并将注册后的 sync tag 放入 sync 的注册列表中可以通过SyncManager.getTags() 获取到然后会判断当前的网络环境只有网络在线的情况下注册的 Sync 才会发出 sync 事件然后当 SyncEvent.waitUntil() 中 Promise 为 reject 时将会周期性的触发 onsync 事件直到不为 reject 才会完成 Sync tag然后将相关 tag 清除。 在 Chrome 下当 SyncEvent.waitUntil() 中的参数值一直为 Promise reject 时会最多触发三次 onsync 事件每次的周期时间至少为 5 分钟。 注意sync 事件中的处理结果必须放在 SyncEvent.waitUntil() 中否则会立即完成 Sync。 注意上图中的重试次数和周期时间是 Chrome 环境下的体现具体次数和周期标准中未规范可以 e.lastChance 来判读处理最后一次的相关逻辑。 可以通过 DevTools 里的 Background Services 查看 Sync 的执行过程 使用场景 SyncManager 本身只是一个简单的 APIsync 事件中也只有两个只读属性所以基于 Sync 来做的同步数据比较好的方式搭配 IndexDB 来实现下面两个场景也是基于 IndexDB。 1. 完全 Sync 化数据请求传输 这种场景下相关场景的数据请求先写入 IndexDB 中然后注册 Sync在 onsync 中根据相关 tag 来处理 IndexDB 中的数据请求。 下面是一个聊天应用的场景 index.html btnSend.addEventListener(click, async () {await db.add(chatList, { msg, time, useId});reg await navigator.serviceWorker.ready;reg.sync.register(send_chat); })sw.js self.addEventListener(sync, e {e.tag send_chat e.waitUntil(new Promise.then(async (res, rej) {var allData await db.getAll(chatList);return Promise.all(allData.map(data fetch(data)));})) })2. 失败请求的 Sync 化 这个场景可以针对于某些特定请求先让它正常发送网络请求如果失败则将失败的请求放到相关的 IndexDB 中并设定这条网络请求可尝试的有效期有效期内均会重拾。 关于 sync 的周期上面也说过在 Chrome 下最多尝试三次本场景下的这种需求需要相关的 sync tag 一直处理可用状态所以需要对这一层进行修改满足需求。 例如点赞场景 index.html btnLike.addEventListener(click, () {reg await navigator.serviceWorker.ready;reg.sync.register(like’);fetch(data).catch(e {db.add(likeList, {data, lastTime: 12938749138}); // 有效期时间戳}) })sw.js self.addEventListener(sync, e {if (e.tag send_chat) {e.waitUntil(new Promise.then(async (res, rej) {while (db.get(likeList)[0]) {var data db.get(likeList)[0];try {if(data.lastTime Date.now()) {db.remove(likeList, data)} else {await fetch(data);db.remove(likeList, data)} } catch (err) {if(e.lastChance true) { // 如果最后一次尝试机会则重新注册保证一直有效self.registration.sync.register(like)}}}}));} });注意上面代码中的 db 为模拟的伪代码。 通过 Sync API 的支持网站应用可以较大的离线化提升用户的体验度和应用的可靠性。这样用户在网络连接失败的情况下也能上传表单、点赞评论文章、发送消息等等为用户带来积极的影响。也意味着 Web 应用更加接近原生应用的体验效果。 博客名称王乐平博客 CSDN博客地址http://blog.csdn.net/lecepin 本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
http://wiki.neutronadmin.com/news/446765/

相关文章:

  • 贵州网站建设gzzctyi哈尔滨工程信息网
  • 花都区网站建设免费注册自媒体账号
  • 网站的权限设置wordpress+广告联盟
  • 怎么通过淘宝优惠券做网站赚钱tp框架做网站的优点
  • 网站开发主菜单和子菜单asp.net网站本机访问慢
  • 江苏优化网站关键词编程猫加盟条件和费用
  • 福田网站制作设计微信公众营销平台开发
  • 网站开发 男生企业网站源码变现方法
  • 免费注册网站有哪些ui设计师对学历要求
  • 网站首页轮播图怎么换jsp做视频网站
  • 微网站建设需付费吗大连龙采做网站
  • 网站自建设需要买什么手续如何做网站轮播大图
  • 如何建立网站后台程序oa系统网站建设方案
  • 青岛高级网站建设服务网站首页推荐
  • 白云移动网站建设营销策划公司的经营范围
  • 企业网站优化服务主要围绕着网站建设与管理的心得
  • 给公司做网站 图片倾权淘宝网站小视频怎么做的
  • 广州网站建设排行网站怎么做关键词在哪做
  • 网站开发可行性技术方案丫个网站建设博客
  • 网站标题关键词描述网页制作与网站建设 pdf
  • 网站优化软件方案wordpress图片比例拉伸
  • 化工集团网站建设 中企动力企业网站建设规划方案
  • 做网站要用到哪些架包南京口碑最好的装修公司
  • 好大夫在线个人网站王建设南宁广告网页设计招聘
  • 企业级网站开发需求分析广东软件开发公司
  • 玉林网站建设公司重庆观音桥在哪个区
  • 买完服务器怎么做网站wordpress改代码
  • 南山网站建设公司官方网站的要素
  • 商场设计网站深圳高端网站定制公司
  • wordpress用户名是哪个文件石家庄关键词优化软件