我有一个如下所示的异步计算(参见内联注释):
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)
之后立即插入有效的无操作do! Async.Sleep(100)
。有更清洁的方法吗?甚至可能是do! Async.Nop
。
答案 0 :(得分:5)
这样的事情怎么样:
let nop = async.Return ()
然后你就可以使用它:
async {
// ...
do! Async.Sleep 100
do! nop
}