本文整理汇总了C#中Store.asyncAction方法的典型用法代码示例。如果您正苦于以下问题:C# Store.asyncAction方法的具体用法?C# Store.asyncAction怎么用?C# Store.asyncAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Store
的用法示例。
在下文中一共展示了Store.asyncAction方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: should_allow_for_passing_parameters_to_async_actions
public async void should_allow_for_passing_parameters_to_async_actions()
{
var storeReducerReached = 0;
var reducer = new SimpleReducer<List<string>>(() => new List<string> {"a"}).When<SomeAction>((s, e) =>
{
storeReducerReached += 1;
return s;
});
var store = new Store<List<string>>(reducer);
var action1 = store.asyncAction<LoginInfo, int>(async (dispatcher, store2, msg) =>
{
await Task.Delay(300);
Assert.That(msg.username, Is.EqualTo("John"));
dispatcher(new SomeAction());
return 112;
});
var result = await store.Dispatch(action1(new LoginInfo
{
username = "John"
}));
Assert.That(storeReducerReached, Is.EqualTo(1));
Assert.That(result, Is.EqualTo(112));
}
示例2: all_in_one_example
public async void all_in_one_example(){
var reducer = new SimpleReducer<AppState>()
.When<LoginStarted>((status, action) => {
status.Username = action.Username;
status.Token = "";
status.Status = LoginStatus.LoginInProgress;
return status;
})
.When<LoginSucceeded>((status, action) => {
status.Token = action.Token;
status.Status = LoginStatus.LoggedIn;
return status;
})
.When<LoginFailed>((status, action) => {
status.Status = LoginStatus.NotLoggedIn;
return status;
});
var store = new Store<AppState>(reducer);
var loginAsyncAction = store.asyncAction(async(dispatch, getState) => {
dispatch(new LoginStarted{Username = "John Doe"});
// faking authentication of user
await Task.Delay(500);
var authenticated = new Random().Next() % 2 == 0;
if (authenticated) {
dispatch(new LoginSucceeded{Token = "1234"});
} else {
dispatch(new LoginFailed());
}
return authenticated;
});
var logged = await store.Dispatch(loginAsyncAction);
if (logged){
Assert.That(store.GetState().Status, Is.EqualTo(LoginStatus.LoggedIn));
} else {
Assert.That(store.GetState().Status, Is.EqualTo(LoginStatus.NotLoggedIn));
}
}
示例3: should_allow_for_async_execution_of_code
public async void should_allow_for_async_execution_of_code()
{
var storeReducerReached = 0;
var reducer = new SimpleReducer<List<string>>(() => new List<string> {"a"}).When<SomeAction>((s, e) =>
{
storeReducerReached += 1;
return s;
});
var store = new Store<List<string>>(reducer);
var result = await store.Dispatch(store.asyncAction<int>(async (dispatcher, store2) =>
{
await Task.Delay(300);
Assert.That(store2()[0], Is.EqualTo("a"));
dispatcher(new SomeAction());
return 112;
}));
Assert.That(storeReducerReached, Is.EqualTo(1));
Assert.That(result, Is.EqualTo(112));
}