2016-12-22 31 views
7

Próbuję zbudować aplikację jonową (1) za pomocą kąta. Nie rozumiem Dlaczego otrzymuję ostrzeżenie toBłąd pokazujący - "Blink odłożył zadanie, aby przewijanie przebiegało płynniej"

„migać odroczone zadania w celu przewijania gładsza. Zaprogramowania i sieciowe zadania powinna zająć mniej niż 50ms do uruchomienia tego uniknąć. Proszę zobaczyć https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/rail i https://crbug.com/574343#c40 dłużej Informacja."

oraz dodatkowe ostrzeżenia, gdy używam stron suwaków jest

„Ignorowany próba anulować zdarzenie touchmove z cancelable = false, na przykład z powodu przewijanie jest w toku i nie może zostać przerwana.”

„Posługiwanie imprezy wejściowego«touchstart»zostało opóźnione o 835 ms ze względu na główny wątek jest zajęty. Zastanów się znakowanie obsługi zdarzeń jako«pasywny», aby strona bardziej elastyczne”

+0

Widziałem to raz dzisiaj zbyt honorowe 7 Lite - to było tak, jakby przycisk, który wywołał przejście była nieaktywna - ale zdałem sobie sprawę, że mogę dotknąć przewijania w poziomie do następnego ekranu. Przejście nie działało, dopóki cała aplikacja nie została ponownie uruchomiona. –

+2

Jest to rodzaj pytania, na które mało prawdopodobne jest poświęcenie większej uwagi, nawet przy użyciu nagrody, ponieważ nie zawiera żadnych szczegółów, które mogłyby pomóc w rozwiązaniu problemu poza podjęciem próby ponownego wyjaśnienia dokumentacji błędu. Jeśli * naprawdę * jesteś zainteresowany pomocą, to niektóre wskazówki, co faktycznie próbujesz zrobić, na przykład, które moduły jonowe, do których dzwonisz iw jakiej kolejności, pomogłyby. – Claies

Odpowiedz

4

Te ostrzeżenia są „normalne”. Widok internetowy zasadniczo informuje, że niektóre zdarzenia są powiązane z wydarzeniem przewijania, a nawet z wydarzeniem dotykowym, które może spowolnić działanie aplikacji. Dokumenty google zalecają na przykład używanie interwałów zamiast wykonywania obliczeń lub funkcji bezpośrednio w zdarzeniach touchmove/drag, co nie zawsze jest możliwe w przypadku aplikacji mobilnej z podglądem strony internetowej, w zależności od tego, co próbujesz osiągnąć w UX.

Co więcej, jeśli korzystasz z setInterval, będziesz musiał użyć szalonych agresywnych taktów, jak 10 ms, a twój scroll/drag będzie wyglądał naprawdę źle. Po prostu zapomnij o tych ostrzeżeniach, są one bardzo ogólne i najprawdopodobniej wskazówkami, ale przez większość czasu nie można ich uniknąć.

Jeśli nadal chcesz uniknąć ostrzeżenia, oto przykład jQuery. Chodzi o to, aby wychwycić dowolne wartości z wydarzenia, a następnie uruchomić obliczenia w osobnym wątku.

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

Może być niezwiązany, ale z mojego doświadczenia, w zasadzie dostajesz to, ponieważ kątowe/strona jest wciąż intensywnie przetwarzania. Kiedyś otrzymywałem te ostrzeżenia, gdy próbowałem przewinąć zbyt szybko po przejściu do nowego stanu - gdybym odczekał sekundę, byłoby dobrze. Moim rozwiązaniem było wyłączenie js scroll, aby zwolnić więcej mocy, tam, gdzie było to bardziej istotne. Sprawdź scrolling.jsScrolling(value) na http://ionicframework.com/docs/api/provider/$ionicConfigProvider/

0

To są rzeczywiście poważne ostrzeżenia. Spędziłem zbyt dużo czasu na tym ostrzeżeniu. Jeśli jest długo działające zadanie javascript, takie jak timer lub zadanie sieciowe, to zostanie ono zatrzymane do czasu przewijania. Następnie, po przewinięciu, zadania te zostaną wznowione. Podczas wykonywania tych ciężkich zadań związanych z przetwarzaniem podjęto szczególną ostrożność.