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

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

使用「設計模式」巧妙解決 BUG 的經歷,妙啊~

來源: 責編: 時間:2024-06-20 15:19:12 128觀看
導讀是這樣的,這天,我接到了一個 BUG,當然這個 BUG 不是我寫的,是這樣的有兩個頁面:頁面 A:有同步代碼,有異步代碼頁面 B:全是同步代碼注意:此項目是老項目,沒有全局狀態管理工具!!!// 頁面Aconsole.log(1)console.log(2)http.get(url)

是這樣的,這天,我接到了一個 BUG,當然這個 BUG 不是我寫的,是這樣的有兩個頁面:1tF28資訊網——每日最新資訊28at.com

  • 頁面 A:有同步代碼,有異步代碼
  • 頁面 B:全是同步代碼

1tF28資訊網——每日最新資訊28at.com

注意:此項目是老項目,沒有全局狀態管理工具!!!1tF28資訊網——每日最新資訊28at.com

1tF28資訊網——每日最新資訊28at.com

// 頁面Aconsole.log(1)console.log(2)http.get(url).then(res => {  console.log(3)  localStorage.setItem(key, res)})// 頁面Bconsole.log(  localStorage.getItem(key))

然后這兩個頁面是先后加載的,那么我們可以得出輸出順序是:1tF28資訊網——每日最新資訊28at.com

1 // 頁面A2 // 頁面Aundefined // 頁面Bconsole.log(3) // 頁面A

因為請求是異步的,導致頁面B那邊拿不到 localStorage 里面的東西,而無法完成很多操作,導致了出現 BUG。所以得想想怎么去解決這個 BUG。1tF28資訊網——每日最新資訊28at.com

定時器

最簡單的就是利用定時器去解決:1tF28資訊網——每日最新資訊28at.com

// 頁面BsetTimeout(() => {  console.log(  localStorage.getItem(key)  )})

但是這樣是不對的,不好維護,濫用定時器會導致以后可能會有新的 BUG 出現!!!1tF28資訊網——每日最新資訊28at.com

發布訂閱模式

所以還是使用發布訂閱,首先實現一個發布訂閱中心,以下是簡單實現:1tF28資訊網——每日最新資訊28at.com

type Callback<T> = (data: T) => void;class PubSub<T> {  private subscribers: Callback<T>[] = [];  subscribe(callback: Callback<T>): void {    this.subscribers.push(callback);  }  unsubscribe(callback: Callback<T>): void {    this.subscribers = this.subscribers.filter(fn => fn !== callback);  }  publish(data: T): void {    this.subscribers.forEach(fn => fn(data));  }}export const ps = new PubSub();

接著就可以用它來解決我們那個 BUG 了!!1tF28資訊網——每日最新資訊28at.com

// 頁面Aconsole.log(1)console.log(2)http.get(url).then(res => {  console.log(3)  localStorage.setItem(key, res)  ps.publish(res)})// 頁面B// 訂閱ps.subscribe((res) => {  console.log(res)  console.log(    localStorage.getItem(key)  )})

現在的輸出順序就是:1tF28資訊網——每日最新資訊28at.com

1 // 頁面A2 // 頁面Aconsole.log(3) // 頁面Ares // 頁面Bres // 頁面B

小結

這就是利用了 發布訂閱模式 這種設計模式,來解決我們日常的一些簡單業務,所以大家可以多用,這樣在面試時就不怕面試官問你啦!1tF28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-95149-0.html使用「設計模式」巧妙解決 BUG 的經歷,妙啊~

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

上一篇: C++模板增強,模板編程更上一層樓

下一篇: 用 Python 代替 xftp 從 Linux 服務器下載文件

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 乐平市| 鸡泽县| 玉田县| 元谋县| 固原市| 逊克县| 昌黎县| 武定县| 肇东市| 陕西省| 繁昌县| 西丰县| 赤壁市| 鞍山市| 金塔县| 曲水县| 光山县| 渝中区| 古交市| 佳木斯市| 普洱| 丰镇市| 彭州市| 叶城县| 扎囊县| 汝城县| 电白县| 汶川县| 华宁县| 元朗区| 合水县| 昆明市| 邵阳县| 镇赉县| 东宁县| 富平县| 天峨县| 黎城县| 文登市| 敖汉旗| 耒阳市|