2010-07-28 29 views
0

Je joue avec différents modèles de design JS, et j'essaie de modifier certains échantillons que j'ai vus là-bas. J'ai vu un exemple d'une usine xhr, qui avait plusieurs instructions d'essai/catch imbriquées qui étaient imbriquées les unes dans les autres.Je suis en train de jouer avec différents modèles de conception en Javascript. Cette usine m'a dérouté

try{ 
... 
}catch(e){ 
    try{ 
    ... 
    }catch(e){} 
} 

Je pensais que je serais capable de faire une fonction d'auto-invocation. Cependant, il semble m'avoir échappé quant à la façon dont cela devrait fonctionner. Quelqu'un a-t-il des conseils?

Exemple:
http://jsfiddle.net/jiggliemon/a7xWq/2/


[Mise à jour]:
http://jsfiddle.net/jiggliemon/b5LaZ/embedded/
Case Closed.

+0

Pas tout à fait sûr de ce que la question est ici? J'ai essayé l'exemple et je ne voyais pas quel était le problème? – spinon

+0

l'exemple renvoie une erreur "XHR is undefined". et ma boucle s'arrête à 1 essai. –

+0

http://jsfiddle.net/jiggliemon/a7xWq/2/ <--- nettoyé un peu –

Répondre

0
var XHR = (function(){ 
    var ins = [ 
     function(){return new XMLHttpRequest();}, 
     function(){return new ActiveXObject('Msxml2.XMLHTTP');}, 
     function(){return new ActiveXObject('Microsoft.XMLHTTP');} 
    ],i,tmp; 

    return (function tryIns(i){ 
     i = i || 0; 
     while(i < ins.length){ 
      try{tmp = ins[i]();} 
      catch(e){i++; tryIns(i);} 
      finally{return ins[i];} 
     } 
     throw new Error("Your browser doesn\'t support Ajax requests"); 
    })(); 
})(); 
0

boucle Changed à essayer:

for(var i = 0, l = instances.length; i < l; i ++) { 
    try{ 
     var obj = instances[i].getInstance(); 
     return instances[i]; 
    }catch(e){ } 
} 

Full code