<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 八、window.requestIdleCallback() 還有一個函數[window.requestIdleCallback()](https://w3c.github.io/requestidlecallback/),也可以用來調節重新渲染。 它指定只有當一幀的末尾有空閑時間,才會執行回調函數。 ~~~ requestIdleCallback(fn); ~~~ 上面代碼中,只有當前幀的運行時間小于16.66ms時,函數fn才會執行。否則,就推遲到下一幀,如果下一幀也沒有空閑時間,就推遲到下下一幀,以此類推。 它還可以接受第二個參數,表示指定的毫秒數。如果在指定 的這段時間之內,每一幀都沒有空閑時間,那么函數fn將會強制執行。 ~~~ requestIdleCallback(fn, 5000); ~~~ 上面的代碼表示,函數fn最遲會在5000毫秒之后執行。 函數 fn 可以接受一個 deadline 對象作為參數。 ~~~ requestIdleCallback(function someHeavyComputation(deadline) { while(deadline.timeRemaining() > 0) { doWorkIfNeeded(); } if(thereIsMoreWorkToDo) { requestIdleCallback(someHeavyComputation); } }); ~~~ 上面代碼中,回調函數 someHeavyComputation 的參數是一個 deadline 對象。 deadline對象有一個方法和一個屬性:timeRemaining() 和 didTimeout。 (1)timeRemaining() 方法 timeRemaining() 方法返回當前幀還剩余的毫秒。這個方法只能讀,不能寫,而且會動態更新。因此可以不斷檢查這個屬性,如果還有剩余時間的話,就不斷執行某些任務。一旦這個屬性等于0,就把任務分配到下一輪`requestIdleCallback`。 前面的示例代碼之中,只要當前幀還有空閑時間,就不斷調用doWorkIfNeeded方法。一旦沒有空閑時間,但是任務還沒有全執行,就分配到下一輪`requestIdleCallback`。 (2)didTimeout屬性 deadline對象的?`didTimeout`?屬性會返回一個布爾值,表示指定的時間是否過期。這意味著,如果回調函數由于指定時間過期而觸發,那么你會得到兩個結果。 > * timeRemaining方法返回0 > * didTimeout 屬性等于 true 因此,如果回調函數執行了,無非是兩種原因:當前幀有空閑時間,或者指定時間到了。 ~~~ function myNonEssentialWork (deadline) { while ((deadline.timeRemaining() > 0 || deadline.didTimeout) && tasks.length > 0) doWorkIfNeeded(); if (tasks.length > 0) requestIdleCallback(myNonEssentialWork); } requestIdleCallback(myNonEssentialWork, 5000); ~~~ 上面代碼確保了,doWorkIfNeeded 函數一定會在將來某個比較空閑的時間(或者在指定時間過期后)得到反復執行。 requestIdleCallback 是一個很新的函數,剛剛引入標準,目前只有Chrome支持。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看