如何忽略异步块中Async函数的返回值?

ca9*_*3d9 3 f#

m1m2下面的函数具有编译错误.

let m p = async { return p * 2 }
let m1 () = async { do! m 2 } // ERR: was expected 'int' but here has type 'unit'
let m2 () = async { do! m 2 |> ignore } // ERR: expecting 'Async<int>->Async<'a>' but given 'Async<int>->unit'
Run Code Online (Sandbox Code Playgroud)

m在最后一行被调​​用.如何忽略其回报价值?以下是唯一的方法(将由编译器优化执行吗?)?

let m1 () = 
    async { 
      let! x = m 2 
      () 
    }
Run Code Online (Sandbox Code Playgroud)

Cha*_*ert 7

你可以使用Async.Ignore这个:

let m1 () = async { do! m 2 |> Async.Ignore }
Run Code Online (Sandbox Code Playgroud)

从文档:

Async.Ignore 创建一个运行给定计算的异步计算并忽略其结果.