2012-05-22 51 views
0

我試圖按照這裏的基本的cometd例如Hello World示例:http://dojotoolkit.org/reference-guide/1.7/dojox/cometd.html的cometd與道場

它使用舊的模塊加載,所以我嘗試等價如下:

require(["dojo/ready","dojo/io/script","dojox/cometd","dojox/cometd/callbackPollTransport"], function(ready, dontcare, cometd) { 
    ready(function(){ 
     cometd.init('http://localhost:8080/MyCometD/cometd'); 
     comted.subscribe("/test", function(msg){ 
      console.debug(msg); 
     }); 
    }); 
}); 

這沒有按」並且我認爲它與加載模塊有關 - 由於ready函數中的代碼根本不執行,所以存在某種無聲錯誤。我發現,當「dojox/cometd」require語句存在時,ready函數中的代碼不會執行。

運行例如:http://jsfiddle.net/Q9W8f/2/

例與DojoX中/ comted刪除:http://jsfiddle.net/mMs2h/4/

我還沒有與新的模塊加載器那麼多,所以我敢打賭,我只是有一些簡單的誤解工作。

幫助!

回答

1

看起來你是正確的,並且對於從未加載的模塊需求存在「等待循環」。這可能是dojox.cometd中的任何需求,您需要重寫代碼庫以進行修復。

我在RollingListPane上也有類似的問題,也在dojox倉庫中 - 開發人員說'我們是100%符合AMD的1.7',但dojox中的X是實驗的簡稱。 dojox模塊的開發不是由核心djtk團隊完成的,並且仍存在毛刺。

嘗試讓初學者避免使用在每個模塊上執行>>內置宏的CDN。在使用AMD時,這往往會失敗。相反,下載壓縮包,並使用一個本地副本 - 不壓縮(道場釋放-1.7.2- SRC

+0

謝謝,我切換到舊的包加載樣式,並且我得到了這個問題 – Lightbeard

+0

我剛剛嘗試了一個更新版本的cometd(2.5),並且最新版本與AMD一起工作 – Lightbeard