等待通用任务和 return 结果
await generic Task and return the result
我有函数调用
let result = session.Query<Domain.CustomerReadModel>().ToListAsync()
其中 returns Task<Collections.Generic.IReadOnlyList<Domain.CustomerReadModel>>
如何在 F# 中正确地“等待”这个任务?
我试过了
async {
session.Query<Domain.CustomerReadModel>().ToListAsync() |> ignore
}
以及
let result = session.Query<Domain.CustomerReadModel>().ToListAsync()
|> Async.AwaitTask
|> Async.RunSynchronously
这似乎可以编译,但我不能使用结果 return 它:
session.Query<Domain.CustomerReadModel>().ToListAsync()
|> Async.AwaitTask
|> Async.RunSynchronously
Async.AwaitTask
接受任务,将其包装在 async
计算中,然后 returns 你进行计算。一旦你拥有它,你就可以将它与 let!
或 do!
或 return!
一起使用,就像任何其他 async
计算一样。
async {
let queryAsFsharpAsync = session.Query<Domain.CustomerReadModel>().ToListAsync() |> Async.AwaitTask
let! result = queryAsFsharpAsync
...
}
或者不给计算自己的名字:
async {
let! result = session.Query<Domain.CustomerReadModel>().ToListAsync() |> Async.AwaitTask
...
}
我有函数调用
let result = session.Query<Domain.CustomerReadModel>().ToListAsync()
其中 returns Task<Collections.Generic.IReadOnlyList<Domain.CustomerReadModel>>
如何在 F# 中正确地“等待”这个任务?
我试过了
async {
session.Query<Domain.CustomerReadModel>().ToListAsync() |> ignore
}
以及
let result = session.Query<Domain.CustomerReadModel>().ToListAsync()
|> Async.AwaitTask
|> Async.RunSynchronously
这似乎可以编译,但我不能使用结果 return 它:
session.Query<Domain.CustomerReadModel>().ToListAsync()
|> Async.AwaitTask
|> Async.RunSynchronously
Async.AwaitTask
接受任务,将其包装在 async
计算中,然后 returns 你进行计算。一旦你拥有它,你就可以将它与 let!
或 do!
或 return!
一起使用,就像任何其他 async
计算一样。
async {
let queryAsFsharpAsync = session.Query<Domain.CustomerReadModel>().ToListAsync() |> Async.AwaitTask
let! result = queryAsFsharpAsync
...
}
或者不给计算自己的名字:
async {
let! result = session.Query<Domain.CustomerReadModel>().ToListAsync() |> Async.AwaitTask
...
}