[Flex] 모듈 순차적 실행

3487 단어 Flex
Flex는 단일 스레드에 속하며 이벤트 감청을 바탕으로 하는 비동기적인 처리 메커니즘으로 사랑과 미움을 자아낸다.비동기적인 처리 방법으로 코드가addevent Listener와 xxxHandler에 널리 퍼지고 순서가 실행되지 않은 코드가 단숨에 이루어지며 순서 실행을 실현하는 것은 매우 복잡하다. 단지 전 작업인Handler에서 다음 작업을 시작하고 이렇게 순환하는 것이 아니다.
최근 Cairngorm 3의 클래스 라이브러리에서 순서대로 실행되는 클래스 라이브러리Task Library가 발견되었고 Flex3 & 4를 지원하며 현재 버전은 1.7입니다.
Task Library Task Library Cairngorm Task Library Library Task Library Library Library Task Library Library Library Library Task Library Library Libr이것은 프로그램의 시작 순서를 조율하거나 특정한 순서로 진행되는 일련의 비동기 프로세스를 관리하는 데 사용될 수 있다.
소개, 설명서 및 다운로드: http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm+Libraries
번역: http://hi.baidu.com/taotao5453/blog/item/e5f322f5798b8228bd310939.html
Task Library의 핵심은 순차적 또는 병렬적 작업 모두입니다.Task를 사용자 정의할 때 Task를 계승하고 performTask 방법을 덮어쓰고 Task가 완성될 때complete 방법을 호출해야 합니다.
순차적으로 작업을 수행하려면 Task를 SequenceTask에 추가해야 합니다. 마지막 작업이 완료되면 TaskEvent가 발송됩니다.TASK_COMPLETE 이벤트
Parallel Task에 Task 를 병렬로 추가하여 모든 작업을 수행한 후 Task Event를 발송합니다.TASK_COMPLETE 이벤트
단일 XML 파일의 Task 읽기
import com.adobe.cairngorm.task.Task;
	
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
	
public class XMLTask extends Task
{
    private var name:string;
    private var filename:string;

    public function XMLTask(name:string, filename:String)
    {
        this.name = name;
        this.filename = filename;
    }

    override protected function performTask():void
    {
        var urlLoader:URLLoader = new URLLoader();
        urlLoader.addEventListener(Event.COMPLETE, completeHandler);
        urlLoader.load(new URLRequest(filename));
    }

    private function completeHandler(e:Event):void
    {
        var urlLoader:URLLoader = e.target as URLLoader;
        XMLLocator.getInstance()[name] = new XML(urlLoader.data); //            ,                
        complete();
    }

}

여러 XML 파일을 순차적으로 읽기
protected function creationCompleteHandler(event:FlexEvent):void
{
    var task:SequenceTask = new SequenceTask();
    task.addChild(new XMLTask("config", "config.xml"));
    task.addChild(new XMLTask("rule", "rule.xml"));
    task.addChild(new XMLTask("message", "message.xml"));
    task.addEventListener(TaskEvent.TASK_COMPLETE, taskCompleteHandler);
    task.start();
}

private function taskCompleteHandler(event:TaskEvent):void
{
    var xml:XMLLocator = XMLLocator.getInstance();
    trace(xml.config);
    trace(xml.rule);
    trace(xml.message);
}

위의 예는 병렬 읽기가 필요하면 SequenceTask를 ParallelTask로 바꾸면 됩니다.구체적인 내용은 "cairngorm3 도구 클래스 라이브러리 Task"http://blog.chinaunix.net/space.php?uid=122937&do=blog&id=143124 참조
참고: Task Library는 URLloader, HTTPS 서비스, Web Service, Remote Object 등 여러 비동기식 또는 비동기식 방법과 다른 방법의 순서나 병행 실행 중 이벤트 알림이 필요한 클래스에 적용된다고 생각합니다.
  

좋은 웹페이지 즐겨찾기