2016-12-22 34 views
7

我正在嘗試使用角度來構建離子(1)應用程序。 我不明白爲什麼會收到這樣的警告錯誤顯示 - 「眨眼推遲一項任務,以使滾動更順暢」

「閃爍,以便使滾動平滑推遲的任務。你的計時器和網絡任務應該不會超過50毫秒少跑避免這種情況。請參閱更多https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/railhttps://crbug.com/574343#c40信息。」

和額外的警告,當我使用頁面滑塊是

「忽略試圖取消touchmove事件與可取消=虛假,例如由於滾動過程中,不能中斷。」

「的‘touchstart’輸入事件處理被延遲了835毫秒,由於主線程忙。考慮標記事件處理程序爲‘被動’,使頁面更加適應」

+0

我今天在Honor 7 Lite上看到過這樣的事情 - 就好像觸發過渡的按鈕不活動一樣 - 但我意識到我可以觸摸 - 水平滾動到下一個屏幕。在整個應用程序重新啓動之前,轉換無效。 –

+2

這是一種不太可能得到多少關注的問題,即使有獎金也是如此,因爲它沒有包含任何可能有助於在嘗試重新解釋錯誤文檔時解決問題的細節。如果你真的*有興趣提供幫助,那麼一些你真正想要做什麼的指示,例如你打電話給哪個離子模塊,以什麼順序,將會有所幫助。 – Claies

回答

4

這個警告是「正常人」。 webview基本上告訴你,一些事件綁定到滾動事件,甚至觸摸事件,這可能會減慢應用程序。谷歌文檔建議,例如使用間隔,而不是直接在touchmove/drag事件上運行計算或函數,這對於具有webview的移動應用程序來說並不總是可行,具體取決於您試圖完成UX智能的內容。此外,如果你使用setInterval,你將不得不使用瘋狂的積極時間,如10毫秒,你的滾動/拖動看起來非常糟糕。 只要忘記這些警告,它們是非常通用的,最有可能的指導方針,但大多數情況下都是無法避免的。

如果你仍然想避免警告,這裏是一個jQuery示例。這個想法是捕捉來自事件的任何值,然後在單獨的線程上運行計算。

var int, x, y; 

$('#mydiv').on('touchstart', function(event){ 
     int = setInterval(work, 20); 
}); 

$('#mydiv').on('touchend', function(event){ 
     clearInterval(int); 
}); 

$('#mydiv').on('touchmove', function(event){ 
     x = event.touches[0].pageX; 
     y = event.touches[0].pageY; 
}); 

function work(){ 
     //how you can do whatever with x y without getting a warning 
} 
1

可能是不相關的,但是從我的經驗,基本上你要這個,因爲你的角/頁仍集中處理。如果我在導航到新的狀態後嘗試滾動得太快,我曾經得到這個警告 - 如果我等了一秒鐘就沒關係。我的解決方案是禁用js滾動,以釋放更多的權力,以更加相關。檢查scrolling.jsScrolling(value)http://ionicframework.com/docs/api/provider/$ionicConfigProvider/

0

這些實際上是嚴重的警告。我在這個警告上花了太長時間。如果長時間運行JavaScript任務(如計時器或網絡任務),則會停止,直到您滾動爲止。然後當滾動完成後,這些任務將重新開始。因此,在執行這些繁重的處理任務時要特別小心。