一个接一个地执行操作
Executing operations one after the other
我正在为某事而苦苦挣扎,我想问问你是否可以为我指明正确的方向。
我有四个任务要完成,-一个接一个。
- 从网络获取 html-代码
- 解析此代码并保存到核心数据存储
- 使用此数据并批量保存到日历
- 将解析后的数据上传到我自己的网络服务器。
我已经为此编写了所有代码并且它执行得很好。然而,有时它会遇到一些困难,因为一些代码在另一个代码完成之前执行。
示例:
func startProcess () {
fetchHTMLFromWeb()
parseHTML()
saveToCalendar()
//Sometimes uploadToWeb() starts before saveToCalendar() is finished
uploadToWeb()
}
我曾尝试阅读 GCD,但这是一个相当复杂的主题,我发现很难掌握它。
你能推荐关于这个主题的任何好的读物吗?
非常感谢!
您可以使用 GCD 来执行后台队列中的所有内容。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.startProcess();
});
这样,startProcess 将在后台启动 queue/thread。所以你可以
在fetchHtmlFromWeb
方法中,当获取结束时调用parseHtml()
。
希望对你有帮助。
我正在为某事而苦苦挣扎,我想问问你是否可以为我指明正确的方向。
我有四个任务要完成,-一个接一个。
- 从网络获取 html-代码
- 解析此代码并保存到核心数据存储
- 使用此数据并批量保存到日历
- 将解析后的数据上传到我自己的网络服务器。
我已经为此编写了所有代码并且它执行得很好。然而,有时它会遇到一些困难,因为一些代码在另一个代码完成之前执行。
示例:
func startProcess () {
fetchHTMLFromWeb()
parseHTML()
saveToCalendar()
//Sometimes uploadToWeb() starts before saveToCalendar() is finished
uploadToWeb()
}
我曾尝试阅读 GCD,但这是一个相当复杂的主题,我发现很难掌握它。
你能推荐关于这个主题的任何好的读物吗?
非常感谢!
您可以使用 GCD 来执行后台队列中的所有内容。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.startProcess();
});
这样,startProcess 将在后台启动 queue/thread。所以你可以
在fetchHtmlFromWeb
方法中,当获取结束时调用parseHtml()
。
希望对你有帮助。