Как игнорировать возвращаемое значение функции Async в блоке Async? - PullRequest
0 голосов
/ 08 июня 2018

m1 и m2 в следующих функциях имеют ошибки компиляции.

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'

m вызывается в последней строке.Как игнорировать его возвращаемое значение?Является ли следующий способ единственным (его исполнение будет оптимизировано компилятором?)?

let m1 () = 
    async { 
      let! x = m 2 
      () 
    }

1 Ответ

0 голосов
/ 08 июня 2018

Вы можете использовать Async.Ignore для этого:

let m1 () = async { do! m 2 |> Async.Ignore }

Из документации:

Async.Ignore Создаетасинхронное вычисление, которое запускает данное вычисление и игнорирует его результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...