小编Lea*_*ift的帖子

在嵌套闭包中调用完成处理程序以停止递归函数

我的程序从 API 中提取数据,将预约数据返回到小部件中。我设置了一个闭包来处理从 API 中提取未知数量的页面。每次调用 loadResults 时,它都会从第 1 页开始查询 API,然后检查是否还有剩余页面,如果还有剩余页面需要拉取,则再次调用自身。一旦 API 的所有页面都被拉出并加载到我的数组中,它就会停止运行。

我正在 getTimeline 函数中加载 getAllResults 函数,并希望等到它完成运行后再加载我的时间线条目。

有没有办法在 getAllResults 上放置一个可选的完成处理程序,以便我可以使用此函数在完成处理程序完成后加载我的时间线条目?由于我多次调用它,我想让它递归运行直到完成,并能够提醒时间线它已完成并准备加载。

当前代码:

func getAllResults(){
    loadResults { (pageReturned) in
        if pageReturned == Int(totalPages)! {
            pages = 1
            parseData(apptReturn: apptList)
            //end the call
        } else if pageReturned < Int(totalPages)! {
            pages = pages + 1
            getAllResults()
               
            }

        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在考虑类似的方法来命名完成处理程序并在嵌套闭包中调用它(但这不起作用)。有没有办法在 loadResults 闭包中引用 getAllResults 完成?

func getAllResults(completedResults completion: @escaping (Bool) -> ()){
    loadResults { (pageReturned) in
        if pageReturned == Int(totalPages)! {
            pages = 1 …
Run Code Online (Sandbox Code Playgroud)

closures completionhandler swift

2
推荐指数
1
解决办法
1399
查看次数

标签 统计

closures ×1

completionhandler ×1

swift ×1