3
我需要在後臺調用一個調用web服務的API。我不希望將(非常複雜的)方法變成異步,只是說「在後臺執行所有操作」。在F#中如何在後臺運行阻塞調用?
但我失去了如何與F#這一點。這是我有:
let task = async {
let result = SyncApi.syncData(login.url, login.zone, login.user, login.pwd) <-- THIS MUST RUN IN BACKGROUND...
match result with
|Some(msg) -> failwith msg
| None ->()
}
task
|> Async.Catch
|> Async.RunSynchronously
|> fun x ->
match x with
| Choice1Of2 x -> rootPage.Navigation.PopToRootAsync(true) |> ignore
| Choice2Of2 ex -> showMsgError(ex.Message)
不,我不能忽略錯誤並離開。 – mamcx
爲什麼你需要*首先在背景上調用API?如果要在處理期間使UI響應,但不能異步顯示錯誤消息,恐怕除了讓整個方法異步外,別無他法。如果您想使該方法更快,那麼顯示錯誤的同步點就是問題 - 它不會消失,它必須等待處理結果。 –
是的是讓UI響應。在swift中很容易做到這一點,我只是安排在另一個線程的任務︰https://stackoverflow.com/questions/24056205/how-to-use-background-thread-in-swift – mamcx