मैं सिर्फ उत्सुक हूं कि कैसे कॉलरजेएस कॉल स्टैक के संबंध में घटनाओं को संभालता है।क्या कैस्परजेएस() पिछले कार्य में उत्सर्जित घटनाओं पर प्रतीक्षा करते हैं?
मान लें कि हम कुछ कोड है:
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 के खिलाफ जाँच करेगा: pendingWait, loadInProgress, और navigationRequested। कॉल स्टैक को प्रिंट करना, उत्सर्जन कॉल को फ़ंक्शन स्टार्ट() में होने के लिए दिखाता है, इसलिए शुरू हो जाएगा() ईवेंट समाप्त होने तक समाप्त नहीं किया जाएगा? अर्थात। तो() जब तक घटना
समाप्त हो गया है इंतजार करेंगे मैं 60 सेकंड के इंतजार के साथ इस परीक्षण किया है, और मैं आउटपुट प्राप्त किया: हालांकि मुझे यकीन है कि अगर एक निश्चित समय बाह्य को पार ट्रिगर करेगा नहीं था
start
foo
done
इसके बाद फिर()।
बहुत अच्छी तरह से, प्रतिक्रिया के लिए धन्यवाद! अगर मैंने कुछ गैर-एसिंच तर्क के साथ प्रतीक्षा कथन को प्रतिस्थापित किया है, तो मुझे अभी भी एक ही आउटपुट की उम्मीद करनी चाहिए? मेरी समझ से स्टार्ट कॉलबैक समाप्त हो जाता है जब अंतिम गैर-एसिंच स्टेटमेंट समाप्त हो जाता है (भले ही वह कथन कुछ घटना में है), और तब() उस बिंदु से पहले निष्पादित नहीं होगा। –
आपका अवलोकन सही है और आउटपुट एक जैसा होगा, लेकिन समय अलग होगा, क्योंकि अब अवरुद्ध इंतजार 'this.echo ('foo') से पहले है;' –