execute method

  1. @override
dynamic execute ([TParam param ])

Calls the wrapped handler function with an option input parameter

Implementation

@override
execute([TParam param])
{
      if (!_canExecute)
      {
        return;
      }

      if (_isRunning)
      {
         return;
      }
      else
      {
        _isRunning = true;
        _canExecuteSubject.add(false);
      }

      _commandResultsSubject.add(new CommandResult<TResult>(null,null,true));

      try {
        var result = _func(param);
        _commandResultsSubject.add(new CommandResult<TResult>(result,null,false));
        _resultsSubject.add(result);
      }
      catch (error)
      {
          if (throwExceptions)
          {
              _resultsSubject.addError(error);
              return;
          }

          if (error is Exception)
          {
            _commandResultsSubject.add(new CommandResult<TResult>(null,error,false));
          }
          else
          {
            _commandResultsSubject.add(new CommandResult<TResult>(null,new Exception(error.toString()),false));
          }
      }
      finally
      {
        _isRunning = false;
        _isExecutingSubject.add(false);
        _canExecuteSubject.add(true);
      }
}