宿小羽 2016-05-17 12:40 采纳率: 0%
浏览 2936

ios如何等待异步函数执行完成

iOS中如何等待异步函数执行完成之后再进行之后的操作
func getMovies()
{
let movieId:NSMutableArray = NSMutableArray()

    let path = "http://v.juhe.cn/movie/movies.today";
    let api_id = "42";
    let method = "GET";
    let param = ["cityid":7,"key":"c086aa6fd871c407219dc969620be8f7", "dtype":"json"];
    let juhepai = JHAPISDK.shareJHAPISDK();
    let group = dispatch_group_create()

   dispatch_group_async(group, dispatch_get_main_queue()) { 
    juhepai.executeWorkWithAPI(path, APIID: api_id, parameters: param, method: method,
                               success:{responseObject in
                                /*成功代码*/
                                let result = responseObject["result"] as! NSArray

                                for i in 0...result.count-1{
                                    let test:NSString = result[i]["movieId"] as! NSString
                                    print(test)
                                    movieId.addObject(test)

                                }


        },
                               failure:{error in
                                /*失败代码*/
                                print("dsffadf")
        }
    )
    }
    dispatch_group_notify(group, dispatch_get_main_queue()) {


    }
}
executeWorkWithAPI是聚合数据提供的异步函数,希望在executeWorkWithAPI的回调函数执行完成之后再print(movieId)
试过用diapatch_group,然而每次都是先执行print(movieId)在执行executeWorkWithAPI的回调函数
  • 写回答

1条回答 默认 最新

  • oyljerry 2016-05-17 13:01
    关注

    用信号量来同步。先wait,在异步函数的成功,失败handler中设置信号。这样就可以把异步转成同步

    评论

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容