Namespace: FsToolkit.ErrorHandling
Given a personId and an age, find a person and update their age.
tryParseInt : string -> int voption
tryFindPersonById : int -> Task<Person voption>
updatePerson : Person -> Task<unit>// Task<unit voption>
let addResult = taskValueOption {
let! personId = tryParseInt "3001"
let! age = tryParseInt "35"
let! person = tryFindPersonById personId
let person = { person with Age = age }
do! updatePerson person
}The taskValueOption CE supports for .. in .. iteration over IAsyncEnumerable<'T> sequences. Iteration stops immediately when the body returns ValueNone, without consuming further elements.
tryProcessItem : Item -> Task<unit voption>
getItemsAsync : unit -> IAsyncEnumerable<Item>// Task<string voption>
let processItems () =
taskValueOption {
for item in getItemsAsync () do
do! tryProcessItem item
return "done"
}
// Returns ValueNone and stops iteration on the first ValueNone resultThe backgroundTaskValueOption CE inherits this support automatically.