城市列表頁面-列表切換性能優(yōu)化

在上一篇里浊伙,講到了在滾動字母列表時綁定了函數(shù)handleTouchMove样漆,這個函數(shù)有很大的改進(jìn)空間为障。

handleTouchMove(e){
        // 當(dāng)狀態(tài)等于true時才對執(zhí)行move事件
        if(this.touchStatus){
          const startY=this.$refs["A"][0].offsetTop //dom元素
          const touchY= e.touches[0].clientY-80
          const index=Math.floor((touchY-startY)/20)
          if(index >= 0 && index < this.letters.length){
            this.$emit("change",this.letters[index])
          }
        }

1.用updated生命函數(shù)鉤子初始化startY

從上面代碼里可以看到,每次執(zhí)行handleTouchMove函數(shù)的時候都會重新計算startY放祟,而且handleTouchMove函數(shù)執(zhí)行次數(shù)太頻繁了w⒃埂(不然也不會優(yōu)化它)
考慮在數(shù)據(jù)更新渲染,也就是updated的時候就計算好startY跪妥,每次調(diào)用就可鞋喇。

updated() {
      this.startY=this.$refs["A"][0].offsetTop
    },

cities在開始時是[ ],在ajax成功后才獲取到數(shù)據(jù)眉撵,cities得到值后會再次渲染侦香,此時,updated函數(shù)執(zhí)行纽疟,可以得到startY

2.節(jié)流

因為函數(shù)調(diào)用的很頻繁罐韩,可以定一個計時器幫助節(jié)流。
如果計時器存在污朽,就清除計時器重新開始計數(shù)伴逸,如果沒有就創(chuàng)建新的,這樣性能會大大提高。

 if(this.touchStatus){
          // 節(jié)流操作
          if(this.timer){
            // 如果有定時器就清除
            clearTimeout(this.timer)
          }
          // 沒有 重新創(chuàng)建
          this.timer=setTimeout(() => {
            const touchY= e.touches[0].clientY-80
            const index=Math.floor((touchY-this.startY)/20)
            if(index >= 0 && index < this.letters.length){
            this.$emit("change",this.letters[index])
            }
          }, 16);

節(jié)流參考

函數(shù)節(jié)流
函數(shù)節(jié)流(throttle):當(dāng)持續(xù)觸發(fā)事件時错蝴,保證一定時間段內(nèi)只調(diào)用一次事件處理函數(shù)。節(jié)流通俗解釋就比如我們水龍頭放水颓芭,閥門一打開,水嘩嘩的往下流,秉著勤儉節(jié)約的優(yōu)良傳統(tǒng)美德凰慈,我們要把水龍頭關(guān)小點(diǎn)引瀑,最好是如我們心意按照一定規(guī)律在某個時間間隔內(nèi)一滴一滴的往下滴。如下圖州藕,持續(xù)觸發(fā)scroll事件時束世,并不立即執(zhí)行handle函數(shù),每隔1000毫秒才會執(zhí)行一次handle函數(shù)床玻。
函數(shù)節(jié)流主要有兩種實(shí)現(xiàn)方法:時間戳和定時器


節(jié)流.png

當(dāng)觸發(fā)事件的時候毁涉,我們設(shè)置一個定時器,再次觸發(fā)事件的時候锈死,如果定時器存在贫堰,就不執(zhí)行,直到delay時間后待牵,定時器執(zhí)行執(zhí)行函數(shù)其屏,并且清空定時器,這樣就可以設(shè)置下個定時器缨该。當(dāng)?shù)谝淮斡|發(fā)事件時偎行,不會立即執(zhí)行函數(shù),而是在delay秒后才執(zhí)行贰拿。而后再怎么頻繁觸發(fā)事件蛤袒,也都是每delay時間才執(zhí)行一次。當(dāng)最后一次停止觸發(fā)后壮不,由于定時器的delay延遲汗盘,可能還會執(zhí)行一次函數(shù)。

也就是我們規(guī)定一段時間(一個計時器內(nèi))只能觸發(fā)一次事件询一。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隐孽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子健蕊,更是在濱河造成了極大的恐慌菱阵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缩功,死亡現(xiàn)場離奇詭異晴及,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嫡锌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門虑稼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳钉,“玉大人,你說我怎么就攤上這事蛛倦「枥粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵溯壶,是天一觀的道長及皂。 經(jīng)常有香客問我,道長且改,這世上最難降的妖魔是什么验烧? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮又跛,結(jié)果婚禮上碍拆,老公的妹妹穿的比我還像新娘。我一直安慰自己效扫,他們只是感情好倔监,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菌仁,像睡著了一般浩习。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上济丘,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天谱秽,我揣著相機(jī)與錄音,去河邊找鬼摹迷。 笑死疟赊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的峡碉。 我是一名探鬼主播近哟,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鲫寄!你這毒婦竟也來了吉执?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤地来,失蹤者是張志新(化名)和其女友劉穎戳玫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體未斑,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咕宿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片府阀。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡缆镣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肌似,到底是詐尸還是另有隱情费就,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布川队,位于F島的核電站,受9級特大地震影響睬澡,放射性物質(zhì)發(fā)生泄漏固额。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一煞聪、第九天 我趴在偏房一處隱蔽的房頂上張望斗躏。 院中可真熱鬧,春花似錦昔脯、人聲如沸啄糙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隧饼。三九已至,卻和暖如春静陈,著一層夾襖步出監(jiān)牢的瞬間燕雁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工鲸拥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拐格,地道東北人。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓刑赶,卻偏偏與公主長得像捏浊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撞叨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354