[英]SWIFT - prevent same function from being called concurrently
我有一個應用程序,其中主UI在更新之前等待一些計算。 整個應用程序僅取決於用戶與wifi的連接,因為我們正在進行任何api調用來計算數據。 有時,在RARE條件下,運行所有內容的函數都會執行兩次……導致更新后的UI顯示無效數據。
有什么方法可以防止這種情況發生? 抱歉,我沒有顯示代碼,因為它更容易解釋這個概念。
編輯:要重現此錯誤,這就是我所做的。 下面的偽代碼
override func viewDidLoad() {
mainCall()
}
override func viewWillAppear(_ animated: Bool) {
mainCall()
}
func executeOne(){
callA(){}
callB(){}
etc...
}
您可以使用bool變量來指示API調用是否已經在進行中,並且僅在未進行另一個API調用時才觸發。
class YourClass {
var apiCallIsInProgress = false
func apiCall(){
if !apiCallIsInProgress {
// doApiCall is the function actually implementing the API call and returning the result through a completion handler
doApiCall(completion: {
apiCallIsInProgress = false
}
} else {
apiCallIsInProgress = true
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.