private void OnLogin(object selectedInitialState,
AsyncEventCompletedCallback<EmptyAsyncEventArgs> userCallback,
object userState)
OnLogin(
null,
args =>
{
if (args.IsSuccess)
DetermineNextStep(); //When done, continue to this step
else
//NOTE: This probably means we couldn't connect to the DB
// Handle this case
},
null);
OnLogin(
newInitialState,
args =>
{
ReLoginUser(); //Was logged in; re-logging in user with different initial state
},
null);
示例用法显示了针对两种不同情况对该函数的两个不同调用—初始登录和重新登录(从技术上讲不是重新登录,而是使用不同的初始状态为当前登录的用户重新启动应用程序)。
困扰我的是,这两种情况下的回调函数是不同的。我习惯于看到函数接受回调,以允许函数的用户在所调用函数的权限内提供自定义实现。
不过,在上述情况下,回调函数会更改控制流。根据提供的回调函数,异步调用返回后的后续调用函数是不同的。这是一种代码味道还是仅仅是回调的一种创造性用途?