javascript - Dojo 需要单参数同步吗?

标签 javascript dojo amd

我的公司正在从经典的 Dojo 语法转向 AMD。我们有一些情况需要同步动态加载模块。

dojo 中的 Require 似乎并不正式支持同步加载(至少它没有在任何地方记录),但如果您不传入 a 函数作为第二个参数,它似乎可以工作(至少在 1.7.2 中) 。

require(["path/to/my/Module"]);

我在 Fiddler 中添加了额外的延迟,并且它肯定会在进入下一行之前加载。

有谁知道这是否安全可靠?如果这只是将在 2.0 中退役的经典风格的遗留问题,我并不想在代码库中乱扔乱七八糟的东西。

最佳答案

即使使用commonJs风格需要,AMD也不支持同步加载。仅当模块已经加载时,require 函数才会同步加载。请参阅:

如果你已经异步加载了模块,那么可以使用commonJs风格的require,例如:

var lang = require("dojo/_base/lang");

但是,如果您尚未加载它,它将抛出一个 undefinedModule 错误(我已在 v1.9 中对此进行了测试)。如果这在 v1.7 中有效,那么这已在 Dojo 的后续版本中修复

无法通过将新配置传递给 Dojo 来临时将其置于同步模式,例如:

require({"async":false});

异步设置只能在加载时设置(请参阅:http://dojotoolkit.org/reference-guide/1.9/loader/amd.html#loader-amd-configuration)。因此,您在初始加载时选择异步或同步,然后就陷入困境。

我建议重构任何需要同步操作的代码。这通常是可能的,并且结果可能会是更好更快的代码。

关于javascript - Dojo 需要单参数同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444827/

相关文章:

javascript - 如何获取下拉值变化的下拉数据?

javascript - 如何使用dijit/form/TimeTextBox?

javascript - Dojo 附加事件到动态创建的元素

javascript - 需要JS,通过CDN加载库失败

sapui5 - "Modules that use an anonymous define() call must be loaded with a require() call"

javascript - 自动选择按钮

javascript - 在 PHP 或 JS 中将数字列表转换为带有后缀的特定价格格式?

Dojo:如何查找小部件是否在 dojo 中具有焦点

javascript - Widget 的类变量和构造函数中初始化数组的区别?

javascript - requirejs, almond : A stand alone module built with almond loads all dependencies, 但主要代码没有执行