【发布时间】:2019-07-22 21:14:48
【问题描述】:
我熟悉CSharpFunctionalExtensions。有synchronous usage 和asynchronous usage 的明显例子。但是,在某些情况下,这些需要链接在一起(同步和异步结合)。我在我的Main 方法中使用Task.FromResult 是否正确地做到了这一点?还是我应该调用不同的功能扩展方法?对于这种情况,它可以工作并且应用程序输出预期的 8,但这并不意味着这是我可以在所有软件应用程序中使用的最佳方法。
class Program
{
// Assume this is a normal synchronous operation
static Result<int> GetMyLength(string text) => Result.Ok(text.Length);
// Assume this a typical async operation, such as a web request
static async Task<Result<int>> DuplicateThisAsync(int x) => await Task.FromResult(Result.Ok(x * 2));
static async Task Main()
{
var tryResult = await Task.FromResult(GetMyLength("Daan"))
.OnSuccess(a => DuplicateThisAsync(a));
Console.WriteLine(tryResult.Value);
Console.ReadLine();
}
}
【问题讨论】: