javascript – 卷曲’承诺已完成’错误
作者:互联网
我正在测试各种异步资源加载器,看看我想要使用哪一个.目前Curl正在抛出一个“承诺已经完成”错误……他们的文档说’这应该永远不会发生’.
我“怀疑”我必须在每个被加载的文件中使用’define'(希望不是).此外,他们的文档说Curl可以使用非AMD的JavaScript文件.但是……我是AMD的新手,因为Curl比我正在测试的其他产品要快得多……我愿意花些时间更好地理解这一点.
最后…
即使FireBug显示错误……所有文件仍然异步加载!但是,由于存在错误……代码的“当时”部分永远不会被调用.
所以我的问题是:
>我是否必须更新要包含在’define’中的所有JavaScript文件对象? (…希望不是)
>你能在语法上看到任何其他问题吗?
Head的代码看起来像这样:
<script type="text/javascript">
///<summary>Configuration</summary>
curl = { baseUrl: 'Includes/JavaScript/' };
</script>
<script src="Loaders/Curl/curl.js" type="text/javascript"></script>
<script type="text/javascript">
function onSuccess() {
}
function one rror(ex) {
//alert(ex);
}
require(["MooTools/Core/mootools-1.2.2-core-jm",
"MooTools/mGeneral",
"jQuery/Core/jquery-1.3.2",
"jQuery/Core/jquery.tools.min",
"jQuery/ThirdPartyPlugIns/jquery.tmpl"])
.then(onSuccess, one rror);
//require(["jQuery/TopUp/top_up-min"], null);
require(["jQuery/ThirdPartyPlugIns/jquery.dimensions",
"jQuery/ThirdPartyPlugIns/jQuery.Color.Animations",
"jQuery/ThirdPartyPlugIns/jquery.corners.min",
"jQuery/ThirdPartyPlugIns/jquery.tipsy",
"jQuery/ThirdPartyPlugIns/jquery.numberformatter-1.1.0",
"jQuery/ThirdPartyPlugIns/jquery.tipsy"]);
require(["general",
"WindowCenter",
"ThirdPartyPlugin/KeyBoardCapture",
"ThirdPartyPlugin/bsn.AutoSuggest_2.1.3",
"ee/8Ball",
"ee/EE"]);
</script>
再次……我确信它是由于缺乏AMD风格代码的经验造成的,但我仍然需要帮助…所以任何人都表示赞赏.
解决方法:
通常,如果这些模块没有依赖项,则应将模块包装在define()中或在文件末尾附加define().但是,似乎这些模块都依赖于jQuery,如果不是其他模块/文件.
由于您没有使用标准的AMD require()/ define()协议,因此AMD并没有真正帮助您使用这些模块.除非您打算使用define()编写自己的模块,否则您可以使用任何异步加载器.
也就是说,有一种方法可以使curl.js与非AMD模块/文件一起使用.使用js!插入.这是您翻译为使用js的第一个文件块!插件(注意我还添加了“.js”ext,我喜欢使用非模块):
// we load the core files first, then get the next block that depends on them
curl([
"js!MooTools/Core/mootools-1.2.2-core-jm.js",
"js!jQuery/Core/jquery-1.3.2.js"
]).next([
"js!MooTools/mGeneral.js",
"js!jQuery/Core/jquery.tools.min.js",
"js!jQuery/ThirdPartyPlugIns/jquery.tmpl.js"
]).then(onSuccess, one rror);
如果每个阵列中的任何文件相互依赖,您还可以在它们上使用!order后缀,以确保它们在执行/评估之前等待其他文件(但请确保您正在设置正确的缓存标头).实际上,只要没有缓存问题(移动浏览器在文件大小上添加一些额外的约束),!order后缀是最快的方法.
还有其他错误消息吗?具体来说,我希望curl.js除了“Promise not completed”之外至少抛出一个错误.
此外,请检查网络选项卡(Firebug)或网络选项卡(Chrome),以检查curl.js是否正在查找模块的正确位置.
FWIW,我打算删除别名要求 – >卷曲.原因是全局需求函数是非标准的(并且在AMD提议中明确没有标准化).我建议你使用curl()而不是require().
curl.js还允许它的顶级api通过“apiName”配置参数显式别名,如果你真的,真的想使用名称“require”.
标签:javascript,asynchronous,curl,requirejs,labjs 来源: https://codeday.me/bug/20190710/1419650.html