Javascript框架的自定义事件
t.addEventListener(name, wrapper, false);
} else {
element.attachEvent("on" + name, wrapper);
}
return element;
}
// 调用方式
document.observe("dom:loaded", function() {
console.log("Init: 1");
DOES_NOT_EXIST++;
});
document.observe("dom:loaded", function() {
console.log("Init: 2");
});
看把 Prototype 的作者给乐的 :-/ -- Split -- 在本人看来,原文的作者表述的技术点,除了如何创建健壮的回调系统外,其实还有两条。 其一,就是如何保证在出现异常的时,继续运行期望的代码;其二,就是如何创建互不干扰的“运行环境”。 原文提到的 createEvent 和 setTimeout 都是好办法,只是处理原作者所言在回调系统中,的确使用 createEvent 会比较合适。setTimeout 相对应的详细信息,可移步到 Realazy 兄的相关文章。 而即使出错也能继续运行期望的代码,其实可以考虑使用 finally 语句,下面是个例子: var callbacks = [ function() { console.log(0); }, function() { console.log(1); throw new Error; }, function() { console.log(2); }, function() { console.log(3); } ]; for(var i = 0, len = callbacks.length; i < len; i++) { try { callbacks[i](); } catch(e) { console.info(e); // 获得异常信息 } finally { continue; } } 这一灵感同样来自 Dean Edwards 文章后的回复,在这里也贴下吧: function iterate(callbacks, length, i) { if (i >= length) return; try { callbacks[i](); } catch(e) { throw e; } finally { iterate(callbacks, length, i+1); } } 最后,留个小问题。谁知道上述的代码中,留言者提出的为什么异常到最后才打印出来不? |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |