createAsync2<TResult> method
Creates a RxCommand for an asynchronous handler function with no parameter that returns a value
func
: handler function
canExecute
: observable that can bve used to enable/diable the command based on some other state change
if omitted the command can be executed always except it's already executing
isExecuting will issue a bool
value on each state change. Even if you
subscribe to a newly created command it will issue false
emitLastResult
will include the value of the last successful execution in all CommandResult events unless there is no new result.
For the Observable<CommandResult>
that RxCommand implement this normally doesn't make sense
if you want to get an initial Result with data==null, error==null, isExceuting==false
pass
emitInitialCommandResult=true
.
By default the results Observable and the RxCommand itself behave like a PublishSubject. If you want that it acts like
a BehaviourSubject, meaning every new listener gets the last received value, you can set emitsLastValueToNewSubscriptions = true
.
Implementation
static RxCommand<Null, TResult> createAsync2<TResult>(AsyncFunc<TResult> func,
{Observable<bool> canExecute,
bool emitInitialCommandResult = false,
bool emitLastResult = false,
bool emitsLastValueToNewSubscriptions = false}) {
return new RxCommandAsync<Null, TResult>(
(_) async => func(), canExecute, emitInitialCommandResult, emitLastResult, emitsLastValueToNewSubscriptions);
}