亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue中消息橫向滾動時setInterval清不掉的問題及解決方法

2019-11-19 10:59:23
字體:
來源:轉載
供稿:網友

最近在做項目時,需要進行兩個組件聯動,一個輪詢獲取到消息,然后將其傳遞給另外一個組件進行橫向滾動展示,結果滾動的速度越來越快。這里記錄一下來提醒自己。消息滾動的代碼在最下面,方便下次使用。

問題背景: 最近在做一個需求,組件A獲取消息采用的是輪詢,組件A獲取到新的消息后,將組件A中的消息傳遞給另外一個組件B,當組件B接收到消息時就讓消息在頁面上滾動播放。

實現思路: 這個項目應用的框架為VUE,當組件A獲取到新的消息之后,就觸發中央事件總線,在組件B中進行事件監聽,將其添加進入一個數組,當判斷定時器沒有運動時,就觸發滾動的函數。消息滾動的函數是從消息數組中提取出第一條,然后利用定時器進行消息滾動,當消息滾動到邊緣時清除定時器。

問題:消息在滾動的過程中,該開始還能夠按照給定的速度進行滾動,可是當時間變長后就會出現消息滾動的速度越來越快的問題。

原因:當出現這個問題時,我第一個念頭就是setInterval沒有被清掉,因為當定時器沒有清掉之后又再次調用定時器就會導致多個定時器同時執行,比如第一次是一個計時器,再點一下是就是兩個定時器,這時候每次就是+2,所以速度不斷提升。我看了一下我設置的滾動函數,里面當消息滾動到邊緣時,就清除這個定時器,所以在滾動函數中沒有問題。我又看了下中央事件總線的事件監聽器,發現問題在這里。因為我在判斷一個定時器是否被銷毀時,直接判斷其類型是 數字 還是 null,由于當定時器開始運行時,每一次返回的都是一個ID(數字),而不是一開始的對象,導致當一條消息開始滾動時,又接收到一條新的消息,然后就使得兩個定時器同時運行,從而出現這個問題。

解決方式:當消息滾動到盒子邊緣銷毀定時器時,將其賦值為null,然后修改中央事件的事件監聽,將其判斷沒有定時器的條件修改為null,然后滿足條件的調用消息滾動函數。

橫向滾動的代碼:

<!DOCTYPE html>  <html lang="en">  <head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title>    <style>      * {        margin: 0;        padding: 0;      }      #title {        position: relative;        width: 10%;        margin: 30px auto;        line-height: 30px;        height: 30px;        border: 1px solid red;        overflow: hidden;      }      #content {        position: absolute;        left: 0;        line-height: 30px;        display: inline-block;      }    </style>  </head>  <body>    <div id="title">      <span id="content">123</span>    </div>    <script>      var wrapEle = document.getElementById('title');      let contentEle = document.getElementById('content');      let arr = [        {news: '這是一條新聞'}      ];      let timer = null;      move(wrapEle, contentEle);      function move(wrap, item) {        clearInterval(timer);        if (!arr.length) { return false;}        item.innerHTML = arr[0].news;        arr.splice( 0, 1 );        let allWidth = getCurrentStyle(wrap, 'width');        let itemWidth = getCurrentStyle(item, 'width');        item.style.left = allWidth + 'px';        let speed = 2;        let time = 50;        timer = setInterval( () => {          let itemPlace = getCurrentStyle(item, 'left');          if (itemPlace < -itemWidth) {            clearInterval(timer);          }          item.style.left = itemPlace - speed + 'px';        }, time)      }      function getCurrentStyle (ele, attr) {        return window.getComputedStyle ? parseInt(window.getComputedStyle(ele, null)[attr]) : parseInt(ele.currentStyle[attr] );      }    </script>  </body>  </html>

總結

以上所述是小編給大家介紹的Vue中消息橫向滾動時setInterval清不掉的問題及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人精品久久| www.欧美精品一二三区| 国产99久久精品一区二区永久免费| 亚洲高清一二三区| 国产精品va在线播放我和闺蜜| 亚洲视频在线观看网站| 久久精品国产电影| 国产日韩在线一区| 亚洲国产欧美在线成人app| 精品视频—区二区三区免费| 精品免费在线观看| 夜夜狂射影院欧美极品| 成人国产精品免费视频| 日本免费久久高清视频| 4438全国亚洲精品在线观看视频| 国产在线不卡精品| 欧美一区二区.| 国产精品视频免费在线| 少妇久久久久久| 久久精品视频在线观看| 久久久久久国产精品三级玉女聊斋| 成人在线视频福利| 97久久精品国产| 国产精品户外野外| 亚洲乱码av中文一区二区| 久久99精品久久久久久青青91| 欧美一级黄色网| 国产视频久久久久久久| 色偷偷av一区二区三区乱| 精品一区二区三区四区| 96国产粉嫩美女| 欧美亚洲成人免费| 欧美性xxxx18| 亚洲乱码国产乱码精品精天堂| 国产精品一区二区三| 亚洲色在线视频| 久久久女女女女999久久| 日韩最新中文字幕电影免费看| 韩国国内大量揄拍精品视频| 91精品综合视频| 亚洲色图国产精品| 免费不卡欧美自拍视频| 中文字幕综合在线| 中文字幕欧美亚洲| 久久亚洲精品视频| 97在线视频观看| 黑人与娇小精品av专区| 91精品综合视频| 亚洲毛片在线免费观看| 日韩在线小视频| 亚洲午夜色婷婷在线| 久久人91精品久久久久久不卡| 国内免费久久久久久久久久久| 久久99国产综合精品女同| 疯狂做受xxxx欧美肥白少妇| 亚洲天堂av综合网| 成人免费观看49www在线观看| 91国自产精品中文字幕亚洲| 91成人性视频| 少妇av一区二区三区| 亚洲区免费影片| 欧美大尺度在线观看| 欧美极品少妇xxxxx| 欧美日韩高清在线观看| 亚洲最大福利网| 成人午夜在线观看| 国产一区二区三区视频在线观看| 亚洲天堂av网| 久热精品视频在线观看一区| 97欧美精品一区二区三区| 日本欧美一二三区| 91啪国产在线| 97免费中文视频在线观看| 国产成人亚洲精品| 亚洲精品久久7777777| 国产精品日韩欧美综合| 久久亚洲一区二区三区四区五区高| 亚洲国产精品免费| 欧美成人免费在线观看| 亚洲欧美日本另类| 欧美高清理论片| 久久久精品2019中文字幕神马| 国产91对白在线播放| 亚洲大胆人体av| 欧美诱惑福利视频| 91午夜在线播放| 97久久精品视频| 亚洲欧美国产精品va在线观看| 欧美日韩一区二区免费在线观看| 国产欧美日韩免费看aⅴ视频| 国产欧美一区二区三区在线| 成人免费淫片aa视频免费| 亚洲精品国产拍免费91在线| 久久久久久网址| 久久久久久久97| 欧美三级免费观看| 欧美理论电影在线观看| 国产精品人人做人人爽| 91九色国产社区在线观看| 久久6免费高清热精品| 91免费的视频在线播放| 亚洲第一福利在线观看| 欧美黄色三级网站| 日韩av综合网| 亚洲开心激情网| 91欧美激情另类亚洲| 亚洲一级免费视频| 91最新国产视频| 不卡av电影院| 国产精品91久久久| 国产日韩中文在线| 欧美另类高清videos| 久久青草福利网站| 久久精品免费播放| 精品香蕉在线观看视频一| 国产一区二区三区直播精品电影| 中文字幕亚洲无线码a| 亚洲最大在线视频| 一区二区三区美女xx视频| 精品久久久久久久久国产字幕| 日韩成人在线网站| 韩国精品美女www爽爽爽视频| 国产亚洲一区二区精品| 欧美大片va欧美在线播放| 亚洲最大福利视频网站| 亚洲精品一区在线观看香蕉| 最近2019中文字幕mv免费看| 欧美精品久久久久久久免费观看| 97视频免费观看| 欧美激情性做爰免费视频| 欧美成aaa人片在线观看蜜臀| 欧美日韩国产麻豆| 色综合视频网站| 久久av在线看| 97色在线观看免费视频| 国产精品久久久久久av下载红粉| 日韩一区二区久久久| 91系列在线播放| 亚洲品质视频自拍网| 精品国偷自产在线| 欧美极品少妇xxxxⅹ免费视频| 国内外成人免费激情在线视频网站| 欧美精品情趣视频| 亚洲国产成人爱av在线播放| 国产一区二区免费| 国产欧美一区二区三区视频| 日韩亚洲成人av在线| 亚洲福利视频久久| 亚洲视频专区在线| 欧美日本精品在线| 茄子视频成人在线| 97在线免费观看视频| 欧美激情视频网| 日韩hd视频在线观看| 性欧美激情精品| 国产一区二区三区毛片| 亚洲福利视频网| 欧美成人免费大片| 亚洲精品美女久久久| 精品中文字幕久久久久久| 欧美性生交xxxxx久久久| 97在线日本国产| www.精品av.com| 精品色蜜蜜精品视频在线观看|