成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
我在項目中關于localStorage犯的兩個小錯誤,由于我所做的功能點,被應用到了項目的核心模塊中,所以這兩個小錯誤,差點導致了整個項目上線后崩掉,現在想想都可怕~

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識點是我的座右銘,基礎是進階的前提是我的初心。

背景

這次分享我在項目中關于localStorage犯的兩個小錯誤,由于我所做的功能點,被應用到了項目的核心模塊中,所以這兩個小錯誤,差點導致了整個項目上線后崩掉,現在想想都可怕~

真的,有些錯誤雖小,但是一定要杜絕啊~

一錯:LocalStorage變量廢棄

第一版

事情是這樣的,我有一個需求,需要將一個url存進LocalStorage中

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'

并且這個代碼上線了,用戶也使用了這段代碼的功能。。

第二版

后來,覺得直接存不太好,得加個時間戳,讓這個url具有時效性,這時候我將代碼改成了

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中了,這時候存儲中是

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

但是后來我改成了第二版并且上線了,這個時候用戶使用第二版的代碼去取第一版中的存儲,會導致報錯

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

// 使用時
const baseUrl = getUrlStorage() ?? 
                'http://api.com'

改正:變量廢棄

那么應該怎么改正呢?大家要注意一個點:

當LocalStorage中某個緩存,它的數據格式改變了,那么一定要廢棄他的key,換一個新的

所以正確改正方法是,將baseUrl這個變量廢棄了,換個新的

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

二錯:JSON.parse無錯誤處理

由上一個錯誤,可以發現,在JSON.parse時進行錯誤處理,是非常重要的

注意:JSON.parse不止用在取LocalStorage時,還有其他很多使用場景

所以,每次JSON.parse時要做好錯誤的兜底處理,防止由于錯誤導致后面代碼執行不下去

// 取時
const getUrlStorage = () => {
  try {
    const baseUrlObj = 
            Storage.get(BASE_URL)
    const { url, time } = 
            JSON.stringfy(baseUrlObj)
    return url
  } catch(e) {
    return null
  }
}
責任編輯:武曉燕 來源: 前端之神
相關推薦

2011-07-03 20:38:33

SEO

2015-03-04 14:16:39

Web開發小錯誤致命錯誤

2011-06-19 12:43:55

SEO

2017-09-27 16:38:51

2016-10-18 10:55:03

java調試問題

2015-06-03 13:54:37

JavaScript小錯誤

2016-03-17 16:57:39

SaaSSaaS公司指標

2013-06-19 09:49:28

編程學習

2012-09-20 09:24:36

編程學習編程開發

2019-03-15 14:21:02

互聯網數據技術

2020-07-01 07:38:38

SQL數據庫程序員

2020-09-16 12:51:40

Windows 10更新微軟

2012-09-10 09:43:21

編程編程學習編程錯誤

2011-05-04 09:05:52

網絡崩潰錯誤連接DHCP

2011-05-31 15:38:37

CSS

2022-09-20 10:22:00

CIOIT業務管理者

2010-05-28 09:57:50

TortoiseSVN

2014-01-06 17:09:17

App開發移動開發

2025-06-10 07:09:00

2020-08-07 11:46:47

JavaScript開發代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜视频在线观看网站 | 久久精品综合 | 日韩av一区在线观看 | 欧美国产日韩一区二区三区 | 一区二区三区在线免费观看 | 国产精品久久久久久久久久久免费看 | 日韩电影一区 | 免费视频99 | 国产精品美女久久久久久久网站 | 国产精品久久久久久久久久尿 | 中文字幕亚洲一区二区三区 | 午夜成人免费视频 | 久久不射电影网 | 免费av在线| 中文字幕免费 | 日韩三级在线观看 | 中文字幕在线一区二区三区 | 羞羞午夜| 古典武侠第一页久久777 | 国产资源在线视频 | 久久一二区 | www.日日操| 日本超碰 | 亚洲精品久久 | 国产农村妇女毛片精品久久麻豆 | 色狠狠桃花综合 | 一级做a爰片性色毛片 | 成人网av | 色综合久久天天综合网 | 国产日韩精品一区 | 国产视频精品在线观看 | 91精品国产色综合久久 | 国产一区欧美 | 亚洲视频在线播放 | 国产精品久久久久久久三级 | 6080yy精品一区二区三区 | 亚洲不卡av在线 | 在线观看毛片网站 | 免费看欧美一级片 | 激情 一区 | 一区二区三区视频免费看 |