@to_east

F# Async дождатся выполнения асинхронной функции?

open System.Threading.Tasks

let bar : Async<int> =
    async {
        let! _ = Task.Delay(5000) |> Async.AwaitTask
        return 13
    }

let foo : Async<int> =
    async {
        let! _ = Task.Delay(5000) |> Async.AwaitTask
        let! result = bar |> Async.AwaitTask
        return result 
    }


[<EntryPoint>]
let main argv =
    let result = foo |> Async.RunSynchronously
    printfn $"%A{result}"
    0


Говорит что ошибка вызова Async.AwaitTask в функции foo:
No overloads match for method 'AwaitTask'.
Known type of argument: Async Available overloads:  
- static member Async.AwaitTask: task: Task -> Async // Argument 'task' doesn't match  
- static member Async.AwaitTask: task: Task<'T> -> Async<'T> // Argument 'task' doesn't match
  • Вопрос задан
  • 29 просмотров
Решения вопроса 1
let! result = bar |> Async.AwaitTask
Убери вот тут AwaitTask. У тебя же там Async

Но вообще лучше по возможности не использовать Async - используй Task и соответствующий CE
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час