Во втором примере вы просто строите async
рабочий процесс, но не на самом деле запускаете it.
Это разработанотаким образом, вы можете определить сложный рабочий процесс, не выполняя каждую его асинхронную часть немедленно, а вместо этого запустить все это, когда все будет хорошо и готово.
Чтобы запустить его, вам нужно вызвать Async.RunSynchronously
или Async.StartAsTask
:
async {
let! str = getName() |> Async.AwaitTask
//Do something with str
} |> Async.RunSynchronously
Кроме того, если вам нужно работать с Task
s, вероятно, лучше использовать TaskBuilder.fs вместо Async
.