2016-02-09 2 views
0

У меня есть действие следующим образом:Это хорошая практика, чтобы назвать действия в рамках другого действия (в потоке)

SomeActions.doAction1(){ 
    //..dispatch event "started"... 
    //...do some process.... 
    FewActions.doAnotherAction(); //CAN WE DO THIS 
    //...do something more.... 
    //..dispatch event "completed".. 
} 

Хотя вышеуказанные работы без каких-либо проблем, просто интересно, если это действительно по любому флюс шаблон/стандарт или есть лучший способ.

Кроме того, я предполагаю, что вызов «Действия из магазинов» - плохая идея. Поправьте меня, если я ошибаюсь.

ответ

2

Да, призыв к действию в рамках другого действия - это плохая практика. Действия должны быть атомарными; все изменения в Магазинах должны быть в ответ на одно действие. Они должны описывать одну вещь, которая произошла в реальном мире: пользователь нажал кнопку, сервер ответил данными, обновил экран и т. Д.

Большинство людей путаются действиями, когда они думают о них как императив инструкции (сначала сделайте A, затем сделайте B), а не описание того, что произошло, и отправную точку для реактивных процессов.

Вот почему я рекомендую людям, чтобы они назвали свои типы действий в прошедшем времени: BUTTON_CLICKED. Это напоминает программисту основополагающего внешне описательного характера действий.

Действия, как газета, которая доставляется во все магазины, описывая, что произошло.

Вызов из магазинов - это почти всегда неправильная работа. Я могу только думать об одном исключении: когда Store отвечает на первое действие, запустив асинхронный процесс. Когда процесс асинхронности завершен, вы хотите отключить второе действие. Это происходит в случае вызова XHR на сервер. Но лучший способ - превратить XHR-код обработки в модуль Utils. Затем хранилище может ответить на первое действие, вызвав метод в модуле Utils, а затем модуль Utils имеет код для вызова второго действия, когда возвращается ответ сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^