2012-05-04 56 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/

相關問題