असल में, हाँ, यह तुल्यकालिक है।
trigger: function(name) {
if (!this._events) return this;
var args = slice.call(arguments, 1);
if (!eventsApi(this, 'trigger', name, args)) return this;
var events = this._events[name];
var allEvents = this._events.all;
if (events) triggerEvents(this, events, args);
if (allEvents) triggerEvents(this, allEvents, arguments);
return this;
},
आयात समारोह triggerEvents
है, जो वास्तव में संचालकों कॉल:
यहाँ स्रोत से प्रासंगिक अनुभाग है। comments के अनुसार, यह केवल एक अनुकूलित प्रेषक है। ध्यान दें कि वे सभी .call()
और .apply()
पर कॉल कर रहे हैं, इसलिए कॉलर को नियंत्रण वापस करने से पहले कॉलबैक पूरा हो जाएगा।
var triggerEvents = function(obj, events, args) {
var ev, i = -1, l = events.length;
switch (args.length) {
case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx);
return;
case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0]);
return;
case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1]);
return;
case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1], args[2]);
return;
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
}
};
जैसा कि अन्य ने उल्लेख किया है, हालांकि, ट्रिगर हैंडलर अपने कॉलबैक को शेड्यूल करने के लिए स्वतंत्र हैं, यदि वे इतने इच्छुक हैं। इस प्रकार, हैंडलर वापस लौटने से पहले अपना काम पूरा कर लेते हैं या नहीं, हैंडलर कोड पर निर्भर हैं।
मैं निश्चित रूप से एनोटेट स्रोत उपयोगी पाते हैं; इस तरह के सवालों का जवाब देते समय मैं ज्यादातर पेपर ट्रेल छोड़ना पसंद करता हूं। धन्यवाद! –