一个接一个地执行操作

时间:2015-01-25 11:00:07

标签: swift concurrency grand-central-dispatch

我对某些东西感到厌烦,我想问你是否可以指出我正确的方向。

我要完成四项任务,一个接一个。

  1. 从网络
  2. 获取html代码
  3. 解析此代码并保存到核心数据存储
  4. 使用此数据并批量保存到日历
  5. 将解析后的数据上传到我自己的网络服务器。
  6. 我已为此编写了所有代码并且执行正常。但是,有时它会因为某些代码在另一个代码完成之前执行而挣扎。

    示例:

    func startProcess () {
    
        fetchHTMLFromWeb()
    
        parseHTML()
    
        saveToCalendar()
    
        //Sometimes uploadToWeb() starts before saveToCalendar() is finished
        uploadToWeb()
    
    }
    

    我曾尝试阅读GCD,但这是一个相当复杂的主题,我发现很难掌握它。

    你能否就这个问题推荐任何好的阅读材料?

    非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用GCD在后台队列中执行所有内容。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  self.startProcess();
});

,startProcess将在后台队列/线程上启动。所以你可以

fetchHtmlFromWeb方法中,只需调用parseHtml(),即可获取提取结果。 希望它有所帮助。