주로 Javascript 프로젝트에서 Rake를 대체 할 수있는 Jake을 테스트하고 있습니다. 이상한 점은 이벤트가 완료되기 전에 완료 이벤트가 트리거되고 있다는 것입니다. 여기 비동기 작업 완료 전에 Jake 태스크 실행 완료
은 예입니다task('some_task_1', {async: true}, function() {
console.log("|- Doing something");
var execCallback = function() {
console.log(" |- Done something");
complete();
};
setTimeout(execCallback, 2000);
});
task('some_task_2', {async: true}, function() {
console.log("|- Doing something else");
var execCallback = function() {
console.log(" |- Done something else");
complete();
};
setTimeout(execCallback, 2000);
});
task('task_runner', {async: true}, function() {
var firstTask = jake.Task['some_task_1'];
var secondTask = jake.Task['some_task_2'];
firstTask.addListener("complete", function() { secondTask.invoke(); });
secondTask.addListener("complete", function() { complete(); });
firstTask.invoke();
});
task('default', function() {
jake.Task['task_runner'].invoke();
});
내가 기대 한 것 출력이 될 것이라고 :
|- Doing something
|- Done something
|- Doing something else
|- Done something else
그러나 내가 실제로 얻을 것은 :
|- Doing something
|- Doing something else
|- Done something
|- Done something else
그래서이 제이크에서 비동기가 어떻게 작동해야하는지에 관한 몇 가지 마법? 실제로 어떻게 임원을 완료하기 전에 완전한 사건을 일으키는 것처럼 보입니다.
== 편집 == https://github.com/mde/jake
== 편집 2 ==이
이 된 지금 또 다른 예를 게시 그냥 그래서 제이크의 버전 0.5.16을 사용하고 혼동이없는
비동기 인 작업 내의 작업과 관련이있는 것처럼 정확한 문제를보다 명확하게 보여줘야합니다.
인터넷 검색 노드 Jake는 여러 가지가 있지만 비슷한 결과를 얻습니다. github에 문서 링크 또는 저장소 이름을 제공 할 수 있습니까? 라이브러리를 올바르게 사용하고 있다고 가정 할 때, 특히 addListener를 가정하고, 함수를 호출 할 때 콜백과 그럴듯하게 보입니다. – ChrisCM
그것은 문자 그대로 단지 몇 시간 전에 노크 한 간단한 로컬 제이크 프로젝트입니다. 실제 프로젝트는 자바 스크립트에 타이프 스크립트 파일을 컴파일하지만, 위의 코드는 똑같습니다. 그래서 불행히도 github 링크 또는 아무것도 ... 나는 처음으로 인터넷 검색을 시도했지만 게시물과 내 문제 사이에 직접적인 상관 관계가 없었고, 대부분 타사 라이브러리를 사용하여 시퀀스 된 빌드를 수행하는 방법에 관한 것이 었습니다. 모든 것이 * 잘 될 것 같아서 예상대로 실행되지 않습니다. ( – Grofit