Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function sayHello() { alert('Привет, ' + localStorage.name + '!'); } растянулся на 28 строк кода :)Поняв проблему легко и придумать решение: достаточно при линковке атомов запоминать максимальную глубину среди ведущих плюс один, а при итерировании по отложенным для обновления атомам в первую очередь обновлять атомы с меньшей глубиной.Начав ради интереса делать свою реализацию под C#, я столкнулся с такой проблемой: при смене списка зависимостей в результате работы автотрекинга может измениться глубина. На уменьшение глубины можно забить, а вот увеличение глубины надо распространять всем мастерам вверх по графу. В итоге, мы возвращаемся к той же самой проблеме, с которой и начинали: глубина может обновляться много раз у одного и того же атома. Конечно, операция обновления глубины более дешевая, чем операция пересчета состояния атома (поскольку вторая может и запрос на сервер выполнять) — но все равно лишние квадраты в алгоритмах мне не нравятся.
Атом — минимальный кирпичик реактивного приложения