Просто съм любопитен как CasperJS обработва събития по отношение на стека за повиквания.
Да кажем, че имаме някакъв код:
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();
Знам, че then() ще чака проверка срещу 3 флага: pendingWait, loadInProgress и navigationRequested. Разпечатването на стека на повикванията показва, че извикването е във функцията start(), така че start() няма да се счита за завършено, докато събитието не приключи? т.е. ще изчака () докато събитието приключи
Тествах това с изчакване от 60 секунди и получих резултата:
start
foo
done
Въпреки че не бях сигурен дали превишаването на определено време за изчакване ще задейства следващия then().