2015-01-25 2 views
1

나는 뭔가 어려움을 겪고 있으며 올바른 방향으로 나를 지적 할 수 있는지 물어보고 싶습니다.다른 작업을 차례로 수행

내가 완료하고 싶은 네 가지 작업이 있습니다.

  1. 이 코드를 구문 분석
  2. 에서 HTML 코드 가져 오기 및 일정
  3. 에 저장 핵심 데이터 저장
  4. 사용이 데이터 및 배치에 저장 내 자신의 웹 서버에 분석 데이터를 업로드합니다.

나는이 코드를 모두 작성 했으므로 잘 실행됩니다. 그러나 때로는 다른 코드가 끝나기 전에 일부 코드가 실행되기 때문에 어려움을 겪습니다.

예 :

func startProcess() { 

    fetchHTMLFromWeb() 

    parseHTML() 

    saveToCalendar() 

    //Sometimes uploadToWeb() starts before saveToCalendar() is finished 
    uploadToWeb() 

} 

내가 GCD에 독서 시도하지만 다소 복잡한 주제이며, 나는 그것이 하드를 파악하기 위해 찾는입니다.

이 주제에 대한 유용한 정보를 추천 해 줄 수 있습니까?

대단히 감사합니다!

+0

무엇이 문제인가? html 코드를 가져 오면 데이터를 가져온 파서를 호출하면됩니다. 작동하지 않습니까? – LastMove

+0

그게 내가 달성하고 싶은 것이지만 어떻게하면 다음 코드가 이전 코드가 완료 될 때만 실행될 수 있도록 만들 수 있습니까? 나는 콜백 함수가 갈 길이라고 생각하고있다. 그러나 그것은 나에게 알려지지 않은 영역이다. – fisher

+0

fetchHTMLFromWeb() 함수에서 parseHTML()을 호출하지 않는 이유는 무엇입니까? 백그라운드 스레드에서 startProcess를 호출 하시겠습니까? – LastMove

답변

1

GCD를 사용하여 백그라운드 대기열에있는 모든 내용을 실행할 수 있습니다.

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

그걸로 startProcess는 백그라운드 대기열/스레드에서 시작됩니다. 따라서하실 수 있습니다

fetchHtmlFromWeb 방법에서 그냥 parseHtml() 불러 오기가 끝나면. 도움이 되길 바랍니다.

+0

감사합니다. 나는 그것을 들여다 볼 것이다. 가야 할 길이 옳은 것 같습니다. – fisher