2012-05-04 55 views
8

当我尝试加载不存在的模块时,它以404错误(当然)失败。我想处理这个错误,但不知道如何连接到“错误”事件。Dojo要求,在模块加载失败时连接到错误

根据Dojo文档,我应该可以使用its micro event api来做到这一点。

此代码不起作用。

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

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

Dojo版本是1.7.1,浏览器最新的Chrome。

+0

这样的'require.on'处理程序会在该时间点之后为每个错误事件调用,对吧?我已经使用了'var h = require.on('error',function(err){h.remove(); ... etc}'但这只会处理第一个错误事件,不一定是由'nonexistent/module'。更优雅的方式来只处理您的模块的错误,短缺搜索错误字符串为您的模块名称? – Neek

回答

5

关于这个的文档是有点好奇。我可以得到'错误'事件发生在xhr失败后的短暂超时(dojoConfig.waitSeconds)之后,但只能在异步模式下,并且只能使用开发版的Dojo。

为什么?那么,只有异步模式会引发事件,看起来CDN版本是用dojo-timeout-api == 0构建的。

您可以使用您自己的自定义(SDK)版本的Dojo吗?

@mschr - 如果您使用Dojo(夜间)而不是Dojo 1.7.2,则您的jsfiddle示例有效 - 与上述相同的原因。

+0

我在异步模式下使用dojo的sdk版本。将dojoConfig.waitSeconds设置为某个值最后引发错误,将其设置为0不适用,也适用于1.7.1。谢谢 – Peter

+0

真棒,不知道谷歌会忽略好东西:)这篇文章实际上让我得到了一个长期追求的功能!监控加载器强调了我,试图发布加载模块的进度。这个事件API做了窍门 – mschr

1

调试设置

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

编辑尝试;没有这样的运气 - 看来文档是提前实现这里..

创建捣鼓的可能找到解决办法的目的,理念是好的,将享有使用这个自己

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

相关问题