Try.these
Try.these(Function...) -> firstOKResult
接收任意数目的函数作为参数,返回第一个执行成功的函数(未抛出异常的函数)的结果。
该函数提供一种简单的对按照某种顺序排列的分组代码块进行检测的方法。被检测函数的执行顺序通常依照某个给定的特性, 根据函数和特性的相符程度由高到低进行排列(译注:类似于设计模式中的“职责链[chain of responsibility]”模式)。
在 Prototype 的 Ajax 那一节的样例中,我们希望获取一个 XMLHttpRequest 对象,然而,在 IE6 及其早期版本中,并没有提供内置的 XMLHttpRequest Javascript 对象,如果我们试图实例化该对象,将会抛出一个异常。并且,随着时间的推移,在各个版本的 IE 中,该对象独有的创建方式也随之变化,COM 接口名称也不尽相同。
Try.these 会按照一定的顺序测序多种方法,从最佳的(从理论上来说也是最普遍的)一直到最原始及最少见的方法, 返回第一个执行成功的函数的结果。
如果没有执行成功的函数,Try.these 将返回 undefined,在下面的样例中, 它会导致 getTransport 方法返回 false,并作为最终的返回结果。
getTransport: function(){
return Try.these(
function() { return new XMLHttpRequest() },
function() { return new ActiveXObject('Msxml2.XMLHTTP') },
function() { return new ActiveXObject('Microsoft.XMLHTTP') }
) || false; }
本文介绍了Prototype库中的Try.these函数,该函数用于按顺序尝试执行多个函数,直到找到第一个成功执行(不抛出异常)的函数并返回其结果。在示例中展示了如何使用Try.these来跨浏览器兼容地创建XMLHttpRequest对象。

263

被折叠的 条评论
为什么被折叠?



