博客 RSS 訂閱

程序員白彬 - then, catch, finally如何影響返回的Promise實例狀態

雖然Promise是開發過程中使用非常頻繁的一個技術點,但是它的一些細節可能很多人都沒有去關注過。我們都知道,.then, .catch, .finally都可以鏈式調用,其本質上是因為返回了一個新的Promise實例,而這些Promise實例現在的狀態是什麼或者將來會變成什麼狀態,很多人心裏可能都沒個底。我自己也意識到了這一點,於是我通過一些代碼試驗,發現了一些共性。如果您對這塊內容還沒有把握,

promise , 前端 , Javascript

收藏 評論

程序員白彬 - 我以為我很懂Promise,直到我開始實現Promise/A+規範

我一度以為自己很懂Promise,直到前段時間嘗試去實現Promise/A+規範時,才發現自己對Promise的理解還過於淺薄。在我按照Promise/A+規範去寫具體代碼實現的過程中,我經歷了從“很懂”到“陌生”,再到“領會”的過山車式的認知轉變,對Promise有了更深刻的認識! TL;DR:鑑於很多人不想看長文,這裏直接給出我寫的Promise/A+規範的Javascript實現。 gi

promise , 前端 , Javascript

收藏 評論

十五 - 參透 JavaScript —— 圖解 Event Loop 事件循環

前言 本篇文章主要講解瀏覽器中事件循環(Event Loop) 那些事 單線程 JavaScript 中的同步和異步 同步任務是立即執行的任務,在調用棧(Call Stack)順序執行 異步任務則不同,它在同步任務沒完成之前,不會進入主線程,而是將對應回調函數註冊到隊列中,要理解這一步,我們先要知道任務隊列 任務隊列 在調用棧(Call Stack)中,如果遇到一個異步操作,那麼會將對應的回調函數

promise , 事件循環 , 異步任務隊列 , 異步編程 , Javascript

收藏 評論

沉浸式趣談 - Promise 這個新 API 真香!

Hey, 我是 沉浸式趣談 本文首發於【沉浸式趣談】,我的個人博客 https://yaolifeng.com 也同步更新。 轉載請在文章開頭註明出處和版權信息。 如果本文對您有所幫助,請 點贊、評論、轉發,支持一下,謝謝! 聊到異步,Promise 大家肯定都不陌生,是咱們處理異步操作的神器 不過呢,就算有 Promise,有時候處理一些既可能是同步又可能是異步的函數,或者那種隨時可

promise , ecmascript , 程序員 , 前端

收藏 評論

何棄療 - 一次簡單的頁面跳轉引發問題和思考

背景 後台系統首頁,存在各個訂單狀態的數量統計,現需要實現點擊後跳轉到對應頁面,即快速跳轉。目前系統只有一個訂單列表頁面,table上方倒是有查詢表單,可以根據不同狀態篩選數據。 初步思路 首頁通過框架路由API跳轉,攜帶參數;目標頁面初始化階段獲取參數,填入表單,發起查詢請求。 分析現有代碼 列表頁面由一個統一的Table組件封裝,Table內有查詢Form、Table等組件,通過外部傳入的查詢

vue.js , promise , 路由 , 前端 , Javascript

收藏 評論

程序員Seven - 【設計模式】命令模式助力快速添加新命令而不影響現有代碼

概述 日常生活中,我們出去吃飯都會遇到下面的場景。 定義: 將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令對象進行溝通,這樣方便將命令對象進行存儲、傳遞、調用、增加與管理。 結構 命令模式包含以下主要角色: 抽象命令類(Command)角色: 定義命令的接口,聲明執行的方法。 具體命令(Concrete Command)角色:具體的命令,實現命令接口

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】責任鏈模式教你如何優雅地分發任務

概述 在現實生活中,常常會出現這樣的事例:一個請求有多個對象可以處理,但每個對象的處理條件或權限不同。例如,公司員工請假,可批假的領導有部門負責人、副總經理、總經理等,但每個領導能批准的天數不同,員工必須根據自己要請假的天數去找不同的領導簽名,也就是説員工必須記住每個領導的姓名、電話和地址等信息,這增加了難度。這樣的例子還有很多,如找領導出差報銷、生活中的“擊鼓傳花”遊戲等。 定義: 又名職責鏈模

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】探索狀態模式在現代軟件開發中的應用

概述 【例】通過按鈕來控制一個電梯的狀態,一個電梯有開門狀態,關門狀態,停止狀態,運行狀態。每一種狀態改變,都有可能要根據其他狀態來更新處理。例如,如果電梯門現在處於運行時狀態,就不能進行開門操作,而如果電梯門是停止狀態,就可以執行開門操作。 類圖如下: 代碼如下: public interface ILift { //電梯的4個狀態 //開門狀態 public fina

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】從事件驅動到即時更新:掌握觀察者模式的核心技巧

概述 定義:又被稱為發佈-訂閲(Publish/Subscribe)模式,它定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 結構 在觀察者模式中有如下角色: Subject:抽象主題(抽象被觀察者),抽象主題角色把所有觀察者對象保存在一個集合裏,每個主題都可以有任意數量的觀察者,抽象主題提供一個接口

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】使用中介者模式實現鬆耦合設計

概述 一般來説,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現為複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下左圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受到影響。如果對象2發生變化,那麼將會有5個對象受到影響。也就是説,同事類之間直接關聯的設計是不好的。 如果引入中介者模式,那麼同事類之間的關係將變為星型結構,從下右

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】遍歷集合的藝術:深入探索迭代器模式的無限可能

概述 定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。 具體聚合(ConcreteAggregate)角色:實現抽象聚合類,返回一個具體迭代器的實例。 抽象迭代器(Iterator)角色:定義訪問和遍歷聚合元素的接口,通常包含 ha

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】通過訪問者模式實現分離算法與對象結構

概述 定義:封裝一些作用於某種數據結構中的各元素的操作(將數據結構於元素進行分離),它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 結構 訪問者模式包含以下主要角色: 抽象訪問者(Visitor)角色:定義了對每一個元素(Element)訪問的行為,它的參數就是可以訪問的元素,它的方法個數理論上來講與元素類個數(Element的實現類個數)是一樣的,從這點不難看出,訪問者模式

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】備忘錄模式教你如何優雅地處理狀態快照

概述 備忘錄模式提供了一種狀態恢復的實現機制,使得用户可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原,很多軟件都提供了撤銷(Undo)操作,如 Word、記事本、Photoshop、IDEA等軟件在編輯時按 Ctrl+Z 組合鍵時能撤銷當前操作,使文檔恢復到之前的狀態;還有在瀏覽器中的後退鍵、數據庫事務管理中的回滾操作、玩遊戲時的中間結果存檔

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - 【設計模式】使用解釋器模式簡化複雜的語法規則

概述 如上圖,設計一個軟件用來進行加減計算。我們第一想法就是使用工具類,提供對應的加法和減法的工具方法。 //用於兩個整數相加 public static int add(int a,int b){ return a + b; } //用於兩個整數相加 public static int add(int a,int b,int c){ return a + b + c; }

設計模式 , JAVA , 後端

收藏 評論

程序員Seven - SpringCloud帶你走進微服務的世界

認識微服務 隨着互聯網行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差別呢? 單體架構 單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。 單體架構的優缺點如下: 優點: 架構簡單 部署成本低 缺點: 耦合度高(維護困難、升級困難) 分佈式架構 分佈式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立

設計模式 , JAVA , 後端

收藏 評論

打盹的猴子 - Java 設計模式:裝飾者模式(Decorator Pattern)

一、模式定義 裝飾者模式屬於結構型設計模式,允許通過動態包裝對象的方式為對象添加新功能,提供比繼承更靈活的擴展方式。該模式通過組合替代繼承,遵循開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Component(組件接口) 定義被裝飾對象的公共接口 ConcreteComponent(具體組件) 實現基礎功能的具體類 Dec

裝飾者模式 , 設計模式 , JAVA

收藏 評論

打盹的猴子 - 策略模式(Strategy Pattern)深度解析教程

一、模式定義 策略模式屬於行為型設計模式,通過定義算法族並將其封裝為獨立的策略類,使得算法可以動態切換且與使用它的客户端解耦。該模式通過組合替代繼承,符合開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Strategy(策略接口) 定義所有支持的算法的公共接口 ConcreteStrategy(具體策略) 實現策略接口的具體算法

設計模式 , JAVA , 策略模式

收藏 評論

聽風 - 面試背誦版:23種設計模式 + 六大設計原則 + 面試高頻問答

一、設計模式的來源 設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。它不是語法規定,而是一套用來提高代碼可複用性、可維護性、可讀性、穩健性以及安全性的解決方案。 1995 年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可複用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟件設計模式領域的里程碑,人稱

設計模式 , 面試 , 後端

收藏 評論

kuailedehuanggua - 24個寫出漂亮代碼的小技巧

「Java學習 + 面試指南」:javaguide.cn(一份涵蓋大部分 Java 程序員所需要掌握的核心知識)這篇文章我會總結一些實用的有助於提高代碼質量的建議,內容較多,建議收藏!內容概覽: 提取通用處理邏輯註解、反射和動態代理是 Java 語言中的利器,使用得當的話,可以大大簡化代碼編寫,並提高代碼的可讀性、可維護性和可擴展性。我們可以利用註解 + 反射和註解+動態代理來提取類

設計模式

收藏 評論

異常君 - Java 中的享元模式:對象共享的藝術

你是否曾經遇到過系統因創建大量重複對象而導致內存佔用激增的情況?在處理成千上萬個文本字符、UI 控件或遊戲中的粒子效果時,如果為每個實例分配獨立內存,很快就會耗盡系統資源。這時,享元模式就像是 Java 開發中的"內存省錢法",它能讓你在不犧牲功能的前提下大幅降低內存消耗。 什麼是享元模式? 享元模式(Flyweight Pattern)是一種結構型設計模式,核心思想是共享細粒度對象,減少內存使用

設計模式 , 工廠 , JAVA , 對象 , 後端

收藏 評論

唐青楓 - php 設計模式詳解

簡介 PHP 設計模式是對軟件開發中常見問題的可複用解決方案,通過標準化的結構提升代碼的可維護性、擴展性和複用性。 創建型模式(對象創建) 關注對象的創建過程,解決 “如何靈活、安全地生成對象” 的問題。 單例模式(Singleton) 意圖:確保一個類僅有一個實例,並提供全局訪問點。 適用場景:全局配置、數據庫連接池、日誌管理器(需共享狀態)。 實現要點: 私有構造函數(禁止外部實例化

設計模式 , php

收藏 評論

善良的匕首_ccWZFD - 併發設計模式實戰:Future/Promise

今天為大家帶來的是併發設計模式實戰系列,第十五章Future/Promise,廢話不多説直接開始~ 一、核心原理深度拆解 1. 異步計算雙階段模型 ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Task │───│ Future │───│ Callback │ │ Submission │───│

promise , 設計模式 , 線程 , 併發 , 異步

收藏 評論

自由自在像小鳥 - 從字面到本質,用最直白的方式理解依賴倒置原則

從字面到本質,用最直白的方式理解依賴倒置原則(Dependency Inversion Principle, DIP): 一、字面拆解:四個字的含義 依賴: 指代碼中模塊/類之間的使用關係(如A類調用B類的方法) 例如:Service依賴Repository讀寫數據 倒置: 把傳統的依賴方向"反轉"過來 類比:

設計模式

收藏 評論

晴空月明 - 結構型模式-架構解耦與擴展實踐

結構型模式聚焦於對象間的組合關係,通過優化類與對象的裝配方式,實現系統的靈活性與可擴展性。在分佈式系統中,由於多節點協作、跨網絡通信及異構環境集成等特性,傳統結構型模式需進行適應性改造,以應對分佈式特有的複雜性(如網絡延遲、節點故障、協議異構)。本文系統解析適配器、橋接、組合、裝飾器、外觀、享元、代理七大結構型模式在分佈式場景下的演化與實踐。 一、適配器模式:異構系統的橋樑 1.1 模式核心與分佈

設計模式

收藏 評論