一、lag是什麼
在編程的過程中,我們會經常需要使用到延遲函數來等待一段時間後再繼續執行後續操作。而lag()則是一個在JavaScript中常用的全能延遲函數。但是lag()並不是JavaScript語言內置的函數,所以我們需要一些方法來實現。
想要實現一個完整的lag()函數,需要定義以下三個參數:
/** * delay函數 * @param {number} duration 想要延遲執行的時間,單位為毫秒 * @returns {Promise} 返回一個Promise對象,在duration後resolve */ function delay(duration) { return new Promise(resolve => { setTimeout(() => { resolve() }, duration) }) } /** * lag函數 * @param {number} duration 想要延遲執行的時間,單位為毫秒 * @returns {Promise} 返回一個Promise對象,在duration後resolve */ async function lag(duration) { await delay(duration) }
針對以上定義的代碼,我們就可以在JavaScript中使用lag()來實現我們想要的延遲效果了。
二、加入Lag戰隊
Lag值得我們更深入的探討,Lag戰隊則更值得我們加入。Lag戰隊源於盧臻軒老師在2020年初在微博上發布的一條推文:「Lag epidemic is more harmful than coronavirus epidemic in programming community」(編程領域中的Lag疫情比冠狀病毒更具破壞性)。這條推文引發了廣泛的討論,也讓更多人認識到了Lag的嚴重性。
Lag本身就是指時間上的延遲,然而延遲對我們的工作影響還可能遠超我們的想像。有時候我們可能會因為一些不可預見的延遲而被耽誤,而這無形中也增加了我們在緊張項目中的工作壓力。因此加入Lag戰隊,一起擁抱高效迅捷的工作方式,理應成為我們共同的目標。
三、辣根
辣根這個名字,起源於遊戲中的「WASD」控制,W、A、S、D四個字母相當於傳奇中可能設定的前後、左右鍵位,而按下Shift之後,會出現跑步的效果,這時便需要「按住Shift(切換到跑步狀態)+W(前進)」的操作方式。而桌面環境下,我們也可按下CapsLock鍵切換大小寫,而這時辣根的關鍵就出來了——即使用CapsLock鍵作為「切換跑步和行走狀態」的鍵位,這樣的話便無需手動切換CapsLock鍵狀態,能達到很好的節約時間和提升效率的效果。
針對某些較通用的軟體,比如QQ、微信、sublime text等等,程序員們也早已把CapsLock鍵映射成其它功能,比如輸入中英文、置頂/取消置頂窗口等等。當然,這個映射方式也可以用AutoHotkey等軟體實現。
四、Lag behind
在大部分實時系統中,延遲是非常敏感的話題,其中最著名的莫過於《絕地求生》中的操作嚴重受到Lag的限制。因為對於這一類型的遊戲而言,儘可能的流暢才能實現更好的遊玩效果。不管是切槍、切彈夾的速度,還是各種干擾措施的快速出招,Lag都可能讓玩家失去最佳的時間窗口,從而失去定局的機會。
作為一名開發工程師,也許我們很少會遭遇類似遊戲中那種極端情況,然而在實際工作中,我們也常常會因為Lag而在某些關鍵點處出現不可預見的問題。因此,減輕Lag的影響,或者儘可能避免Lag發生,或許才是我們需要重點關注的地方。
五、喇蛄
喇蛄是指開發過程中遇到的各種困難和出現問題。而Lag則往往成為喇蛄的起源。
在實際開發中,Lag的影響往往會使開發者的情緒產生較大的波動,一方面它延誤了工作進程,另一方面又影響了代碼的質量。對於一些時間超緊、需求超多的項目來說,Lag更是成為了制約進展的一大因素。因此,在Coding的過程中,我們應提高自身的編程水平,降低代碼的出錯率,減少Lag對我們產生的影響。
六、Lagoon
Lagoon通常指的是一個湖泊,但在程序員間,Lagoon則指的是別人的代碼,我們經常會為了找bug而去深入到別人的代碼中。遇到Lag時,我們就可能不得不花費較多的時間去理解和審視其中的細節。因此這也增加了我們前進的心理和生理傷害。因此,儘可能減少Lag對我們產生的影響,對於我們來說也是至關重要的。
七、flag
其實flag在這裡並沒有特別的含義,僅僅是對小標題的一種延伸而已。在程序員中,flag通常指的是一個旗幟,比如一個用戶是否已經登錄,又或者是一個任務是否已經正常完成等等。flag的使用可以讓我們在遇到問題時能夠更方便地快速判斷和處理,增加代碼的可讀性和優化性,是我們在編程中不可或缺的一部分。
八、Lab
在編程中,我們經常會硬鋼琴,花大量的時間在不斷的重構代碼上。而Lag的出現則更可能強化這種行為:我們會認為代碼的延遲是由我們自身的代碼問題所導致,而去一遍遍地進行調試和修改。然而,在大多數情況下,Lag的產生與我們的代碼並沒有太多關係。在這種情況下,我們就需要通過一些實驗去觀察和測量Lag究竟是怎麼產生的,才能更好地去應對和解決這些問題。
九、拉歌詞選取
Lag的影響因素較多,當涉及到頁面或者數據的請求、處理等操作時,頁面顯示效率往往會受到影響。尤其在一些對時間敏感的操作中,如視頻播放、音樂播放等場景下,Lag所帶來的影響就更為明顯了。因此,我們也應在一些操作中增加loading等提示,使得用戶有一定的耐心。在這種情況下,我們有時候也需要提供Lag較小的api介面供其他開發者使用,從而平衡不同頁面的載入速度。
需要注意的是,同時請求多個api介面雖然可以幫助我們更快地獲取數據,但是也容易引起Lag的問題。因此,我們需要掌握一些基礎的技能,避免過度頻繁地對介面進行調用。
結尾語
本文主要圍繞lag()這一延遲函數展開,從多個角度分析了Lag及其在程序開發中所扮演的角色。我們也應該認識到Lag的影響,培養起更為高效迅捷的自身開發習慣,不斷提升代碼的優化和質量,從而更好地服務於用戶。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309323.html