Подавить повторную визуализацию кадров
Можно ли подавить повторную визуализацию? Предположим, я отправляю обработчик [:a]
и обработчик [:b]
на состоянии db-0
, Такой что:
db-0 -> [:a] -> db-1 -> [:b] -> db-0
Конечное состояние такое же, но выполняется два повторных рендеринга. Я не желаю повторного рендеринга посреднического государства db-1
, Повторная визуализация, если необходимо, должна происходить только после [:a]
а также [:b]
оба были применены.
1 ответ
Фон
Если dispatch
вызывает изменение app-db
анимационный кадр будет "запланирован" для обработки любого необходимого повторного рендеринга. В результате этот повторный рендеринг произойдет примерно через 16 мс.
Если, тем временем, другой dispatch
случается, то его изменения app-db
также будет обрабатываться в уже запланированном, следующем анимационном кадре.
К тому времени, когда AF вращается, изменения для обоих dispatched
события будут проявляться в app-db
,
Ваш сценарий
Итак, как вы можете видеть, отправка [:a]
приведет к планированию автофокуса, однако перед его запуском ваш dispatch
из [:b]
будет дальше меняться app-db
вернуться в исходное состояние.
Когда позже будет запущен AF, будут запущены все подписки слоя 2, все они, потому что app-db
был изменен (каким-то образом пока неизвестно), НО потому что предыдущие значения будут =
новые значения, распространение графика сигнала будет сокращено, и никакие повторные рендеры в конечном счете не будут выполняться.