我是一个异步函数,它异步返回一个字符串,我在测试方法中调用该函数,并抛出计算表达式,可能的修复方法是什么?
代码
let requestDataAsync (param: string) : Async<string> =
async {
Console.WriteLine param
return "my result"
}
测试代码
[<TestMethod>]
member this.TestRequestDataAsync() =
let! result = requestDataAsync("some parameter")
Console.WriteLine(result)
Assert.IsTrue(true)
此行let! result = requestDataAsync("some parameter")
此构造只能在计算表达式中使用
问题,如何等待并显示异步功能的结果?
答案 0 :(得分:4)
对let!
的调用必须出现在计算表达式的顶层。您可以通过创建嵌套的async {}块来修复它:
[<TestMethod>]
member this.TestRequestDataAsync() =
async
{
let! result = requestDataAsync("some parameter")
Console.WriteLine(result)
Assert.IsTrue(true)
}
答案 1 :(得分:4)
答案是使用RunSynchronously。这样你可以等待函数调用。
$fileContent = Get-Content -LiteralPath 'c:\testlog\sevenzip.txt' -Raw
$filesToFix = [regex]::Matches($fileContent,
"ERROR: (.*)\nCan not open the file as archive",
'Multiline') |
ForEach-Object {$_.Groups[1].Value}