Делает ли $ evalAsync $ scope. $ Apply ненужным?

0

По моему $evalAsync, $evalAsync будет ставить в очередь изменения текущего цикла дайджеста, если это возможно, если не потом к следующему.

Итак, в каких случаях я бы использовал $scope.$apply?

Оба они выполняют дайджест на $rootScope, но у $evalAsync есть возможность сделать это быстрее, подключившись к текущему циклу дайджеста, который звучит лучше в 99% случаев.

Теги:

1 ответ

0

Я видел эту информацию ниже ссылки, я чувствовал себя хорошо, это может пригодиться вам! http://www.codingeek.com/angularjs/angular-js-apply-timeout-digest-evalasync/

$evalAsync() - это новая функция, впервые введенная в AngularJS 1.2.X, и, на мой взгляд, это ловкая версия $timeout().

Прежде чем $evalAsync() вошел в картину, команда AngularJS рекомендовала использовать $timeout() в случае проблемы цикла дайджеста, описанной выше.

Поскольку AngularJS развился для больших приложений, и цикл дайджест стал распространенным, а затем Angular team представила $evalAsync(). Эта функция будет оценивать выражение в течение текущего цикла или следующего.

Предположим, вы вызываете какое-то выражение в $evalAsync() и каждый цикл дайджеста происходит одновременно. Все выражения из $evalAsync() будут добавлены в очередь, и они будут частью текущего жизненного цикла, и никакой новый цикл дайджеста не будет вызван. Вот почему $evalAsync() делает его более эффективным, поскольку он уменьшает возможность создания нового дайджеста каждый раз.

Если никакого дайджеста не происходит, он будет работать подобно $ timeout. Он создаст обратный вызов со временем по умолчанию (10 мс), и после этого времени (10 мс) будет новый дайджест на rootScope и все выражения будут оценены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню