execute method
- @override
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);
}
}