2
所以我有一个异步的Web请求方法有回调:如何实现递归回调模式?
private void DoWebRequest(string url, string titleToCheckFor,
Action<MyRequestState> callback)
{
MyRequestState result = new MyRequestState();
// ...
// a lot of logic and stuff, and eventually return either:
result.DoRedirect = false;
// or:
result.DoRedirect = true;
callback(result);
}
(只是指出来了前面,我WebRequest.AllowAutoRedirect被设置为false多种原因)
我不“T手之前知道有多少重定向可以期待,所以我开始:
private void MyWrapperCall(string url, string expectedTitle,
Action<MyRequestState> callback)
{
DoWebRequest(url, expectedTitle, new Action<MyRequestState>((a) =>
{
if (a.DoRedirect)
{
DoWebRequest(a.Redirect, expectedTitle, new Action<MyRequestState>((b) =>
{
if (b.DoRedirect)
{
DoWebRequest(b.Redirect, expectedTitle, callback);
}
}));
}
}));
}
现在我的脑子崩溃,我怎么可能把这是一个反复循环,这样它的最后一个回调回如果不需要ReDirects,则为原始呼叫者è?
嗯谢谢主席先生!真棒和优雅,它的工作原理以及... – 2012-04-27 15:04:34