6

次のような非同期計算があります (インライン コメントを参照)。

async {
  //...
  do! Async.Sleep(100) //cancellation may happen during sleep
  //... but isn't checked at the end of the sleep, so regular, non-async computations are executed here 
}

「通常の」計算部分に到達する前にキャンセル チェックを強制するか、非同期計算全体を終了させるために、 のdo! Async.Sleep(1)直後に効果的な no-op を挿入しdo! Async.Sleep(100)ます。これを行うためのよりクリーンな方法はありますか?のようなものさえあるかもしれませんdo! Async.Nop

4

1 に答える 1

5

このようなものはどうですか:

let nop = async.Return ()

次に、次のように使用できます。

async {
    // ...
    do! Async.Sleep 100
    do! nop
}
于 2013-09-07T20:17:49.113 に答える