CasperJS가 호출 스택과 관련하여 이벤트를 처리하는 방법에 대해 궁금합니다. CasperJs()는 이전 함수에서 발생한 이벤트를 기다리고 있습니까?
은의 우리가 몇 가지 코드가 있다고 가정하자 : pendingWait, loadInProgress 및 navigationRequested :casper.on('foo', function() {
this.wait(60000);
this.echo('foo');
});
casper.start('http://www.stackoverflow.com', function() {
this.echo('start');
this.emit('foo');
});
casper.then(function() {
this.echo('done');
});
casper.run();
을 그때() 3 flags에 대해 확인을 기다리는 것을 알고있다. 호출 스택을 출력하면 exit() 함수에 emit 호출이 표시되므로 이벤트가 끝날 때까지 start()가 완료된 것으로 간주되지 않습니까? 나는. 이벤트가
를 완료 할 때까지 다음() 대기 나는 60 초 대기 이것을 테스트, 그리고 출력 얻었다 : 특정 시간 제한을 초과하면 트리거 것인지 확실하지 않았다 비록start
foo
done
을 그 다음에().
매우 철저히 답변 해 주셔서 감사합니다. wait 문을 시간이 좀 걸리는 비동기 논리로 바꾼 경우에도 동일한 출력을 기대해야합니까? 내 이해에서 시작 콜백은 마지막 비동기 (non-asynch) 문장이 끝나면 끝난다. (심지어 그 문장이 어떤 사건에 있어도) 그 지점보다 먼저 실행되지 않을 것이다. –
당신의 관찰 결과는 정확하고 출력은 같지만 타이밍은 달라질 것입니다. 왜냐하면 지금 블로킹 대기가'this.echo ('foo'); –