2013-06-28 4 views
3

Я использую способ кодирования AMD, и когда я делаю async: false, я не вижу никакой разницы в поведении выполнения, т. Е. Делая async true или 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> 

ВЫХОД: В обоих случая я вижу первый «Я внутри DOM готова», а затем «Я внутри готов» тревога в следующем.

Не могли бы вы объяснить, в чем разница, если я добавляю async: true и async: false?

Спасибо.

ответ

6

Чтобы ответить на ваш вопрос, если async устанавливается на truthy значение (true, 1 и т.д.), dojo/domReady и dojo/ready будет загружен, когда require называется. Если async не установлен, эти модули загружаются сразу же после загрузки dojo.js. Таким образом, нет никакого влияния на то, как выполняет ваш код, это только когда эти модули станут доступными для использования.

Это отрывок из описания Dojo AMD:

Для обратной совместимости, загрузчик начинает в синхронном режиме по умолчанию, который автоматически загружает базовый API Dojo:

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

Чтобы положить загрузчик в режиме AMD, установите для переменной конфигурации асинхронной конфигурации значение:

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

Обратите внимание, что вы можете установить только флаг async перед загрузкой dojo.js, а в режиме AMD не загружается ни база Dojo, ни какая-либо другая библиотека - это полностью зависит от приложения, чтобы решить, какие модули/библиотеки загружать ,

+0

спасибо за ответ как async: 1, так и async: true - это то же самое право. – user1716006

+0

Да, они одинаковы. –