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; }