大佬教程收集整理的这篇文章主要介绍了JavaScript – 是骨干的触发器()同步还是异步?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
view = new (this.child_view); this.trigger('pre_render',view); view.render();
将由trigger()调用的事件是否同步执行,从而保证在render()行被调用之前它们都会完成?
以下是源的相关部分:
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,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[1],args[2]); return; default: while (++i < l) (ev = events[i]).callBACk.apply(ev.ctx,args); } };
正如其他人所说,触发器处理程序如果有这样的倾向,可以自由安排自己的回调.因此,处理程序在返回之前是否已经完成其工作取决于处理程序代码本身.
以上是大佬教程为你收集整理的JavaScript – 是骨干的触发器()同步还是异步?全部内容,希望文章能够帮你解决JavaScript – 是骨干的触发器()同步还是异步?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。