簡體   English   中英

SWIFT-防止同時調用同一函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM