2013-06-28 56 views
3

我使用AMD編碼方式,當我做異步:false我沒有看到任何執行行爲的差異,即使異步真假我認爲沒有任何區別。當async:false和true時的行爲

請各位看看下面的代碼片段:

<html> 
<script type="text/javascript" src="../../dojoroot/dojo/dojo.js" data-dojo-config="async:true, parseOnLoad:true"></script> 

<script type="text/javascript"> 
require(["dojo/domReady!"], function(){ 
alert("I am inside DOM ready"); 
}); 

require(["dojo/ready"], function(ready){ 
    ready(function(){ 
    alert("I am inside ready"); 
    }); 
}); 
</script> 
<body> 
some div's here 
</body> 
</html> 

OUTPUT: 在這兩種情況下我第一次看到「我是裏面的DOM準備好了」,然後在「我準備好內」警示未來。

你能解釋一下,如果我添加async:true和async:false,有什麼區別?

謝謝。

回答

6

要回答你的問題,如果async設置爲truthy值(true1等),dojo/domReadydojo/ready會時require被稱爲加載。如果沒有設置async,則在加載dojo.js時立即加載這些模塊。所以對代碼的執行方式沒有任何影響,只是這些模塊何時可供使用。

這是從道場AMD描述片段:

爲了向後兼容,加載器通過默認在同步模式下啓動時,該自動加載道場基API:

<script src="path/to/dojo/dojo.js"></script> 
<script> 
    // the dojo base API is available here 
</script> 

爲了把在AMD模式下加載器,將異步配置變量設置爲truthy:

<script data-dojo-config="async: 1" src="path/to/dojo/dojo.js"></script> 
<script> 
    // ATTENTION: nothing but the AMD API is available here 
</script> 

請注意,您只能在加載dojo.js之前設置異步標誌,而在AMD模式下,Dojo Base和任何其他庫都不會自動加載 - 完全由應用程序決定要加載哪些模塊/庫。

+0

謝謝你的答案async:1和async:true是一樣的權利.. – user1716006

+0

是的,他們是一樣的。 –

相關問題