欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS使用window.requestAnimationFrame()對列表切片進(jìn)行渲染

 更新時間:2023年05月29日 09:31:12   作者:fuGUI  
這篇文章主要為大家介紹了JS使用requestAnimationFrame對列表切片進(jìn)行渲染,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

背景

正常的后端返回幾十條數(shù)據(jù)數(shù)據(jù)直接渲染還好,但是現(xiàn)在需求是表格上面的每一行數(shù)據(jù)都要編輯的操作(各種下拉和輸入),最后整體保存,保存完成后再次進(jìn)來回顯之前的已經(jīng)填的數(shù)據(jù),現(xiàn)在的問題是每次回顯比較慢(接口數(shù)據(jù)很快就返回了),在頁面很卡頓,體驗(yàn)很不好。

問題排查

通過審查代碼也沒發(fā)現(xiàn)什么問題,找不出原因,代碼邏輯是很簡單的,就是等接口數(shù)據(jù)返回然后賦值給表格展示,到頁面就loading了。。

問題解決

之前看到了列表可以切片渲染,就是前端對數(shù)據(jù)做一個分頁然后按照順序加載,假設(shè)每個頁面都有 limit 記錄,那么數(shù)據(jù)可以分為 Math.ceil(total/limit) 個頁面。然后可以使用setTimeout順序渲染頁面,一次只渲染一個頁面。

  • 使用setTimeout
const renderList(list = []){
  const total = list.length
  const page = 0
  const limit = 200
  const totalPage = Math.ceil(total / limit)
  const render = (page) => {
    if (page >= totalPage) return
    setTimeout(() => {
      for (let i = page * limit; i < page * limit + limit; i++) {
        const item = list[i]
        if(item) {
          // ...這里寫當(dāng)前表格賦值邏輯
          // this.tableData.push(item)
        }
      }
      render(page + 1)
    },0)
  }
  render(page)
}
  • 使用requestAnimationFrame來代替 setTimeout
readerList(list = []) {
      const total = list.length
      const page = 0
      const limit = 10
      const totalPage = Math.ceil(total / limit)
      const render = (page) => {
        if (page >= totalPage) return
          for (let i = page * limit; i < page * limit + limit; i++) {
            const item = list[i]
            if(item) {
               // ...這里寫當(dāng)前表格賦值邏輯
               // this.tableData.push(item)
            }
          }
          requestAnimationFrame(() => { render(page + 1) })
      }
      requestAnimationFrame(() => { render(page) })
    }

關(guān)于requestAnimationFrame

requestAnimationFrame

window.requestAnimationFrame() 告訴瀏覽器——你希望執(zhí)行一個動畫,并且要求瀏覽器在下次重繪之前調(diào)用指定的回調(diào)函數(shù)更新動畫。該方法需要傳入一個回調(diào)函數(shù)作為參數(shù),該回調(diào)函數(shù)會在瀏覽器下一次重繪之前執(zhí)行。
備注: 若你想在瀏覽器下次重繪之前繼續(xù)更新下一幀動畫,那么回調(diào)函數(shù)自身必須再次調(diào)用 requestAnimationFrame()。requestAnimationFrame() 是一次性的。

requestAnimationFrame 比起 setTimeout、setInterval的優(yōu)勢主要有兩點(diǎn):

  • requestAnimationFrame 會把每一幀中的所有DOM操作集中起來,在一次重繪或回流中就完成,并且重繪或回流的時間間隔緊緊跟隨瀏覽器的刷新頻率,一般來說,這個頻率為每秒60幀。
  • 在隱藏或不可見的元素中,requestAnimationFrame 將不會進(jìn)行重繪或回流,這當(dāng)然就意味著更少的cpu,gpu和內(nèi)存使用量。

以上就是JS使用window.requestAnimationFrame()對列表切片進(jìn)行渲染的詳細(xì)內(nèi)容,更多關(guān)于JS window.requestAnimationFrame()的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JS獲取img圖片原始尺寸高度與寬度的七種方式

    JS獲取img圖片原始尺寸高度與寬度的七種方式

    近期做項(xiàng)目由于每張圖片加載的時候比例大小都不一樣,加載圖片時大部分圖片會變形,導(dǎo)致圖片展示效果非常差,所以我們可以獲取圖片的原始寬高,然后以等比例展示,效果會非常好,這篇文章主要給大家介紹了關(guān)于JS獲取img圖片原始尺寸高度與寬度的七種方式,需要的朋友可以參考下
    2022-11-11
  • javascript隨機(jī)之洗牌算法深入分析

    javascript隨機(jī)之洗牌算法深入分析

    這篇文章主要介紹了javascript隨機(jī)之洗牌算法深入分析,同時提供了一個完整實(shí)例,需要的朋友可以參考下
    2014-06-06
  • javascript客戶端生成MD5值的函數(shù)代碼

    javascript客戶端生成MD5值的函數(shù)代碼

    用js實(shí)現(xiàn)的客戶端即可實(shí)現(xiàn)md5值的代碼,一般情況下都是后臺語言才有的,客戶端也有了,方便有需要的朋友了。
    2011-02-02
  • 純js實(shí)現(xiàn)仿QQ郵箱彈出確認(rèn)框

    純js實(shí)現(xiàn)仿QQ郵箱彈出確認(rèn)框

    仿QQ郵箱的彈出層,彈出確認(rèn)框,主要是用火狐的firebug把html和css扣了下來,沒有做封裝,就定義了一個拖動事件. 大家可以封裝自己的彈出窗,嘿嘿!
    2015-04-04
  • JavaScript簡單遍歷DOM對象所有屬性的實(shí)現(xiàn)方法

    JavaScript簡單遍歷DOM對象所有屬性的實(shí)現(xiàn)方法

    這篇文章主要介紹了JavaScript簡單遍歷DOM對象所有屬性的實(shí)現(xiàn)方法,涉及JavaScript針對頁面元素屬性操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • JavaScript Event Loop相關(guān)原理解析

    JavaScript Event Loop相關(guān)原理解析

    這篇文章主要介紹了JavaScript Event Loop相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 詳解javascript 正則表達(dá)式之分組與前瞻匹配

    詳解javascript 正則表達(dá)式之分組與前瞻匹配

    本文主要講解javascript 的正則表達(dá)式中的分組匹配與前瞻匹配的,需要對正則的有基本認(rèn)識,本人一直對兩種匹配模棱不清,還有不清楚的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • weui框架實(shí)現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架實(shí)現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架暫時只有css文件,并沒有js文件實(shí)現(xiàn)其功能,我在其html+css后面增加了js實(shí)現(xiàn)其功能,為大家提供方便,也為自己保存記錄。具體實(shí)例代碼大家參考下本文
    2017-08-08
  • 詳解JavaScript數(shù)組的操作大全

    詳解JavaScript數(shù)組的操作大全

    這篇文章主要給大家介紹js數(shù)組的操作,數(shù)組的創(chuàng)建,數(shù)組元素的發(fā)那個吻,數(shù)組元素的添加,數(shù)組元素的刪除,數(shù)組的截取和合并,數(shù)組的拷貝,數(shù)組元素的排序,數(shù)組元素的字符串化等知識,對js數(shù)組的操作感興趣的朋友可以參考下本篇文章
    2015-10-10
  • ajax請求前端跨域問題原因及解決方案

    ajax請求前端跨域問題原因及解決方案

    這篇文章主要為大家介紹了ajax請求前端跨域問題原因及解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10

最新評論