2012-05-04 3 views
8

Quando provo a caricare un modulo inesistente, fallisce con errore 404 (ovviamente). Voglio gestire questo errore ma non so come collegarmi all'evento "errore".Dojo richiede, connettersi all'errore quando il modulo non funziona correttamente.

Secondo Dojo doc, dovrei essere in grado di farlo utilizzando its micro event api.

Questo codice non funziona.

var handle = require.on('error', function(error) 
       { 
        alert('Finally error') 
       }); 

require(['nonexistent/module'], function (m) 
{ 
    alert('Module was loaded correctly')   
}); 

La versione di Dojo è 1.7.1, browser più recente di Chrome.

+0

Un gestore 'require.on' come questo viene chiamato per ogni evento di errore dopo quel momento, giusto? Ho usato 'var h = require.on ('error', function (err) {h.remove(); ... etc}' ma questo gestirà solo il primo evento di errore, e non necessariamente quello causato dal 'inesistente/modulo'. Un modo più aggraziato per gestire solo l'errore per il modulo, a corto di cercare la stringa di errore per il nome del modulo? – Neek

risposta

5

La documentazione su questo è un po 'curioso. I può far scattare l'evento "errore" dopo un breve timeout (dojoConfig.waitSeconds) dopo un errore richiesto da xhr, ma solo in modalità asincrona e solo con una build di sviluppo di Dojo.

Perché? Bene, solo la modalità asincrona solleva l'evento e sembra che la build CDN sia stata creata con dojo-timeout-api == 0.

È possibile utilizzare la propria versione personalizzata (SDK) di Dojo?

@mschr - il tuo esempio jsfiddle funziona se usi Dojo (nightly) invece di Dojo 1.7.2 - lo stesso motivo di cui sopra.

+0

Sto usando la versione sdk di dojo in modalità asincrona .poco dojoConfig.waitSeconds ad un certo valore Alza l'errore, impostandolo su 0. Non funziona. Funziona anche con 1.7.1 Grazie – Peter

+0

fantastico, non avevo idea che google avrebbe lasciato fuori i regali :) questo post mi ha effettivamente portato a ottenere una caratteristica molto ricercata! il caricatore di monitoraggio mi ha stressato, quando ho provato a caricare i progressi del caricamento dei moduli. Questo evento api ha fatto il trucco – mschr

1

provare con il debug impostare

<script src="{{baseUrl}}/dojo/dojo.js" data-dojo-config="async:true, debug: true, debugAtAllCost:true"></script> 

Modifica; tale fortuna - sembra che i documenti sono più avanti di realizzazione qui ..

creato un violino con lo scopo di trovare una soluzione forse, il concetto è bello, godrebbe di utilizzare questo me stesso

http://jsfiddle.net/seeds/h6bXQ/