日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我LocalStorage犯了兩個小錯誤,差點導致項目大崩潰!

來源: 責編: 時間:2024-04-22 17:15:38 164觀看
導讀前言大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心。背景這次分享我在項目中關于localStorage犯的兩個小錯誤,由于我所做的功能點,被應用到了項目的核心模塊中,所以這兩個小錯

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心。y3Z28資訊網——每日最新資訊28at.com

背景

這次分享我在項目中關于localStorage犯的兩個小錯誤,由于我所做的功能點,被應用到了項目的核心模塊中,所以這兩個小錯誤,差點導致了整個項目上線后崩掉,現在想想都可怕~y3Z28資訊網——每日最新資訊28at.com

真的,有些錯誤雖小,但是一定要杜絕啊~y3Z28資訊網——每日最新資訊28at.com

一錯:LocalStorage變量廢棄

第一版

事情是這樣的,我有一個需求,需要將一個url存進LocalStorage中y3Z28資訊網——每日最新資訊28at.com

const BASE_URL = 'baseUrl'// 存時const setUrlStorage = (url: string) => {  Storage.set(BASE_URL, url)}// 取時const getUrlStorage = () => {  return Storage.get(BASE_URL)}// 使用時const baseUrl = getUrlStorage() ??                 'http://api.com'

并且這個代碼上線了,用戶也使用了這段代碼的功能。。y3Z28資訊網——每日最新資訊28at.com

第二版

后來,覺得直接存不太好,得加個時間戳,讓這個url具有時效性,這時候我將代碼改成了y3Z28資訊網——每日最新資訊28at.com

const BASE_URL = 'baseUrl'// 失效時間const TIME_OUT = 60 * 60 * 1000// 存時const setUrlStorage = (url: string) => {  Storage.set(BASE_URL, JSON.stringfy({    url,    // 添加時間    time: Date.now()  }))}// 取時const getUrlStorage = () => {  const baseUrlObj =             Storage.get(BASE_URL)  const { url, time } =             JSON.parse(baseUrlObj)  // 判斷是否失效  if (Date.now() - time >= TIME_OUT) {    return null  } else {    return url  }}// 使用時const baseUrl = getUrlStorage() ??                 'http://api.com'

問題來了

由于之前上線了第一版了,所以有的用戶已經將url存在了LocalStorage中了,這時候存儲中是y3Z28資訊網——每日最新資訊28at.com

baseUrl -> 'http://linsanxin.api.com'

但是后來我改成了第二版并且上線了,這個時候用戶使用第二版的代碼去取第一版中的存儲,會導致報錯y3Z28資訊網——每日最新資訊28at.com

// 取時const getUrlStorage = () => {  const baseUrlObj =             Storage.get(BASE_URL)  // 這里直接報錯,取得是第一版的字符串  // JSON.stringfy + 字符串 直接報錯  const { url, time } =             JSON.stringfy(baseUrlObj)  // ...coding}// 使用時const baseUrl = getUrlStorage() ??                 'http://api.com'

改正:變量廢棄

那么應該怎么改正呢?大家要注意一個點:y3Z28資訊網——每日最新資訊28at.com

當LocalStorage中某個緩存,它的數據格式改變了,那么一定要廢棄他的key,換一個新的y3Z28資訊網——每日最新資訊28at.com

所以正確改正方法是,將baseUrl這個變量廢棄了,換個新的y3Z28資訊網——每日最新資訊28at.com

// 廢棄 const BASE_URL = 'baseUrl'const BASE_URL = 'baseUrlV2'

二錯:JSON.parse無錯誤處理

由上一個錯誤,可以發現,在JSON.parse時進行錯誤處理,是非常重要的y3Z28資訊網——每日最新資訊28at.com

注意:JSON.parse不止用在取LocalStorage時,還有其他很多使用場景y3Z28資訊網——每日最新資訊28at.com

所以,每次JSON.parse時要做好錯誤的兜底處理,防止由于錯誤導致后面代碼執行不下去y3Z28資訊網——每日最新資訊28at.com

// 取時const getUrlStorage = () => {  try {    const baseUrlObj =             Storage.get(BASE_URL)    const { url, time } =             JSON.stringfy(baseUrlObj)    return url  } catch(e) {    return null  }}

本文鏈接:http://www.www897cc.com/showinfo-26-84585-0.html我LocalStorage犯了兩個小錯誤,差點導致項目大崩潰!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 四款值得推薦的AI輔助編程工具

下一篇: JSON, Protobuf, Thrift和MessagePack的優缺點對比

標簽:
  • 熱門焦點
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發布會上看到了iQOO的首款平板產品iQOO Pad。雖
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 28個SpringBoot項目中常用注解,日常開發、求職面試不再懵圈

    前言在使用SpringBoot開發中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 掘力計劃第 20 期:Flutter 混合開發的混亂之治

    在掘力計劃系列活動第20場,《Flutter 開發實戰詳解》作者,掘金優秀作者,Github GSY 系列目負責人戀貓的小郭分享了Flutter 混合開發的混亂之治。Flutter 基于自研的 Skia 引擎
  • 從 Pulsar Client 的原理到它的監控面板

    背景前段時間業務團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產者消息發送緩慢等各種問題。雖然我們有個監控頁面可以根據 topic 維度查看他的發送狀態,
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 阿里瓴羊One推出背后,零售企業迎數字化新解

    作者:劉曠近年來隨著數字經濟的高速發展,各式各樣的SaaS應用服務更是層出不窮,但本質上SaaS大多局限于單一業務流層面,對用戶核心關切的增長問題等則沒有提供更好的解法。在Saa
  • iQOO 11S新品發布會

    iQOO將在7月4日19:00舉行新品發布會,推出杭州亞運會電競賽事官方用機iQOO 11S。
  • 北京:科技教育體驗基地開始登記

      北京“科技館之城”科技教育體驗基地登記和認證工作日前啟動。首批北京科技教育體驗基地擬于2023年全國科普日期間掛牌,后續還將開展常態化登記?! ”本┛萍冀逃w驗基
Top 主站蜘蛛池模板: 枣强县| 都江堰市| 华亭县| 十堰市| 乌拉特后旗| 新河县| 中超| 富平县| 苗栗县| 巴马| 景谷| 随州市| 五大连池市| 新巴尔虎左旗| 明水县| 阿瓦提县| 枣阳市| 兴山县| 崇阳县| 英吉沙县| 巴林右旗| 儋州市| 江川县| 白沙| 德令哈市| 依兰县| 泗水县| 肇庆市| 南皮县| 麟游县| 康保县| 沾益县| 湘潭市| 东乌珠穆沁旗| 卓资县| 肃宁县| 巴塘县| 遂溪县| 珲春市| 奎屯市| 巩义市|