宿小羽 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中设置信号。这样就可以把异步转成同步

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!