execute method
- @override
- [TParam param]
override
Calls the wrapped handler function with an option input parameter
Implementation
@override
void execute([TParam param]) {
if (!_canExecute) {
return;
}
if (_isRunning) {
return;
} else {
_isRunning = true;
_canExecuteSubject.add(false);
}
_commandResultsSubject.add(CommandResult<TResult>(
_emitLastResult ? lastResult : null, null, true));
try {
final result = _func(param);
lastResult = result;
_commandResultsSubject.add(CommandResult<TResult>(result, null, false));
_resultsSubject.add(result);
} catch (error) {
if (throwExceptions) {
_resultsSubject.addError(error);
_commandResultsSubject.addError(error);
_isExecutingSubject.add(
false); // Has to be done because in this case no command result is queued
return;
}
_commandResultsSubject.add(CommandResult<TResult>(
_emitLastResult ? lastResult : null, error, false));
} finally {
_isRunning = false;
_canExecute = !_executionLocked;
_canExecuteSubject.add(!_executionLocked);
}
}