मैं जैस्मीन रन का उपयोग करता हूं और एसिंक्रोनस ऑपरेशंस का परीक्षण करने के लिए प्रतीक्षा करता हूं। सबकुछ ठीक काम करता है लेकिन मुझे यकीन नहीं है कि दृश्यों के पीछे क्या चल रहा है।जैस्मीन क्या करता है और इंतजार करता है वास्तव में क्या करता है?
जैस्मीन दस्तावेज़ निम्नलिखित उदाहरण बताता है जिसमें मैंने तीन लॉग स्टेटमेंट जोड़े।
describe("Asynchronous specs", function() {
var value, flag;
it("should support async execution of test preparation and exepectations", function() {
runs(function() {
flag = false;
value = 0;
setTimeout(function() {
flag = true;
}, 500);
});
waitsFor(function() {
value++;
if(flag) {
console.log("A");
}
return flag;
}, "The Value should be incremented", 750);
console.log("B");
runs(function() {
console.log("C");
expect(value).toBeGreaterThan(0);
});
});
});
});
पहले runs
और waitsFor
मेरे लिए बिल्कुल स्पष्ट हैं। Runs
एक एसिंक्रोनस ऑपरेशन शुरू करता है और waitsFor
एक शर्त के लिए इंतजार कर रहा है।
हालांकि मुझे नहीं पता कि दूसरा runs
waitsFor
समाप्त होने तक क्यों शुरू नहीं होता है। waitsFor
अवरुद्ध कॉल नहीं है।
मेरा अनुमान है कि waitsFor
यह पूरा होने तक runs
कॉल को निहित रूप से अवरुद्ध करता है। क्या ऐसा है?
मेरे सबूत है कि console.log बयान उत्पादन होता है:
बीएसी
लेकिन अगर waitsFor
वास्तव में ब्लॉक कर देगा यह
होना चाहिए एबीसी
मुझे पूरा यकीन है कि यह मामला नहीं है। आपने 'waitsFor' और दूसरा 'रन' के बीच एक कथन लगाया है, इसे 'प्रतीक्षा करने के लिए कोड' से पहले निष्पादित किया जाएगा, मैं इसे प्रतिबिंबित करने के लिए अपना प्रश्न अपडेट करूंगा। –
लेकिन प्रलेखन के लिंक के लिए धन्यवाद, मुझे यह नहीं पता था :) –
और फिर धन्यवाद, जवाब दस्तावेज़ों में है, लेकिन जहां आपने इंगित किया है बिल्कुल नहीं :) –