Паттерн подписчик в mobx
В прошлый раз я писал про createAtomSubscriber и рассказывал про его чрезвычайную полезность. Предлагаю написать примитив Subscriber для реактивной подписки/отписки/переподписки на источники данных. Начнем с примера использования подобной конструкции. Представим, что у нас есть функция receiveData, которая генерирует данные, после передачи ей текстового id и реактивная переменную $id. С помощью Subscriber создадим реактивную подписку. Когда getId будет возвращать значение отличное от undefined и subscriber.data будет под наблюдением - у нас запустится receiveData и, с помощью push, мы будет сохранять последнее полученное значение. Когда значение, возвращаемое getId, изменится (важно чтобы оно было реактивным), произойдет отписка. Если новое значение будет не undefined, то произойдет переподписка. Когда subscriber.data выходит из под наблюдения всегда происходит отписка, вне зависимости от getId. ...