2016-12-22 3 views
7

Я пытаюсь создать приложение для ионной (1) с использованием угловых. Я не понимаю, почему я получаю это предупреждениеОшибка отображения - «Мигает отложено задание, чтобы сделать прокрутку более гладкой»

«Blink отложила задачу, чтобы сделать прокрутку более гладкой. Ваши задачи таймера и сети должны принимать менее 50мс бежать, чтобы избежать этого. Пожалуйста, смотрите https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/rail и https://crbug.com/574343#c40 для более Информация."

И дополнительные предупреждения, когда я использую страницы ползунков являются

«Игнорируются попытка отменить событие TouchMove с отменяемой = ложью, например, потому что прокрутка продолжается, и не может быть прервана.»

«Обработка события ввода„touchstart“была задержана на 835 мсов из-за основной поток будучи заняты. Рассмотрит маркировку обработчика события как„пассивные“, чтобы сделать страницу более отзывчивой»

+0

Я видел это тоже однажды сегодня на Honor 7 Lite - это было так, как если бы кнопка, вызвавшая переход, была неактивной, но я понял, что могу коснуться горизонтальной прокрутки до следующего экрана. Переход не сработал, пока все приложение не было перезапущено. –

+2

Это вопрос, который вряд ли привлечет много внимания, даже с щедростью, потому что он не содержит каких-либо специфических особенностей, которые могли бы помочь устранить проблему, прежде чем пытаться объяснить причину ошибки. Если вы действительно заинтересованы в помощи, то некоторые указания на то, что именно вы на самом деле пытаетесь сделать, например, какие ионные модули вы вызываете и в каком порядке, помогут. – Claies

ответ

4

Это предупреждение «нормали». Веб-просмотр в основном говорит вам, что некоторые события связаны с событием прокрутки или даже с сенсорным событием, что может замедлить работу приложения. Документы google рекомендуют, например, использовать интервалы вместо выполнения вычислений или функций непосредственно на события touchmove/drag, что не всегда возможно с помощью мобильного приложения с веб-просмотром в зависимости от того, что вы пытаетесь выполнить 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, такая как таймер или сетевая задача, она будет остановлена ​​до тех пор, пока вы не прокрутите страницу. Затем, когда прокрутка выполняется, эти задачи возобновляются. Поэтому при выполнении этих задач большой обработки особое внимание уделялось.

Смежные вопросы