コード例 #1
0
ファイル: TvStore.cs プロジェクト: eiximenis/tvision2
        private TvActionResult DoDispatchAction(TvAction action)
        {
            var newState  = _currentState;
            var errored   = TvActionResult.Failed();
            var someError = false;

            foreach (var reducer in _reducers)
            {
                try
                {
                    newState = reducer.Invoke(newState, action);
                }
                catch (Exception ex)
                {
                    errored.AddError(ex);
                    someError = true;
                }
            }

            var isDirty = _dirtyChecker(_currentState, newState);

            if (isDirty)
            {
                _subscribers.ForEach(x => x.Invoke(newState));
            }

            _currentState = newState;

            return(someError ? errored : TvActionResult.OK);
        }
コード例 #2
0
 void ITvDispatcher.Dispatch(TvAction action)
 {
     foreach (var store in _stores.Values)
     {
         store.Dispatch(action);
     }
 }
コード例 #3
0
ファイル: TvStore.cs プロジェクト: eiximenis/tvision2
 public void Dispatch(TvAction action)
 {
     _pendingActions.Add(action);
 }