2012-05-04 19 views
8

Cuando trato de cargar el módulo inexistente, falla con el error 404 (por supuesto). Quiero manejar este error pero no sé cómo conectarme al evento "error".requiere Dojo, se conecta al error cuando el módulo no se carga

De acuerdo con Dojo doc, debería poder hacer eso usando its micro event api.

Este código no funciona.

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

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

Dojo version is 1.7.1, browser latest Chrome.

+0

Un controlador 'require.on' como este se llama para cada evento de error después de ese punto en el tiempo, ¿verdad? He usado 'var h = require.on ('error', function (err) {h.remove(); ... etc}' pero esto solo manejará el primer evento de error, y no necesariamente el causado por el 'nonexistent/module'. ¿Alguna otra forma más elegante de manejar solo el error para su módulo, sin buscar la cadena de error para su nombre de módulo? – Neek

Respuesta

5

La documentación en este es un poco curioso. I puede obtener el evento de 'error' para disparar después de un corto tiempo de espera (dojoConfig.waitSeconds) después de una falla de xhr, pero solo en modo asíncrono, y solo con una compilación de desarrollo de Dojo.

¿Por qué? Bueno, solo el modo asíncrono plantea el evento, y parece que la compilación de CDN se construyó con dojo-timeout-api == 0.

¿Puedes usar tu propia versión personalizada (SDK) de Dojo?

@mschr - tu muestra jsfiddle funciona si usas Dojo (todas las noches) en lugar de Dojo 1.7.2 - la misma razón que la anterior.

+0

Estoy usando la versión sdk de dojo en modo asíncrono. Configurando dojoConfig.waitSeconds a algún valor finalmente aumenta el error. Establecerlo en 0 no funciona. Funciona también con 1.7.1. Gracias. – Peter

+0

increíble, no tenía idea de que Google omitiría las golosinas :) ¡Esta publicación en realidad me llevó a obtener una característica largamente buscada implementada! el cargador de monitoreo me ha estresado, al tratar de registrar el progreso de la carga de módulos. Este api del evento hizo el truco – mschr

1

intentarlo con la depuración establecer

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

Editar; no hubo suerte - parece que están por delante de documentos de aplicación aquí ..

creado un violín con el propósito de encontrar una solución tal vez, el concepto es agradable, gozaría de utilizar este mismo

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

Cuestiones relacionadas