需要JS回退或检查文件是否存在
RequireJS fallback or checking for file existance
我想创建一个requirejs扩展,理想情况下看起来像这样:
var versions = ['one', 'two', 'three'];
define({
load: function (name, req, onload, config) {
var load = function (version) {
try {
req([name + '.' + versions[version]], function (value) {
onload(value);
});
} catch(ex) {
if (version === versions.length - 1)
throw err;
load(version + 1);
}
};
load(0);
});
});
基本上,我想这样做:
require(['plugin!my/file'], function (dep) {
});
在幕后,逻辑应该是:
检查我的/file.one.js。如果存在,请返回。如果不存在。。。
检查我的/file.two.js。如果存在,请返回。如果不存在。。。
检查我的/file.three.js。如果存在,请返回。如果不存在。。。
投掷
问题似乎是,从req
抛出的请求不存在的文件的错误是异步的,因此无法通过这种方式捕获。
有什么关于实现这类功能的建议吗?
我发现了requirejs的回退,但这些回退仅适用于在require-config中定义的路径。我希望标准require调用具有完全相同类型的功能。
我还发现了require.defined
和require.specified
,但同样,似乎只适用于通过require.config或在尝试加载给定模块后定义的模块。
在我看来,您似乎想要使用errback。这样的东西:
var versions = ['one', 'two', 'three'];
define({
load: function (name, req, onload, config) {
var load = function (version) {
req([name + '.' + versions[version]], function (value) {
onload(value);
},
function (err) {
if (version === versions.length - 1)
throw err;
load(version + 1);
});
};
load(0);
});
});
errback是传递给req
的第二个函数。当加载模块失败时,将调用它。
相关文章:
- js文件是否阻碍了war文件的构建
- 使用jQuery检查文件是否存在
- 如何检测 javascript 文件是否被 IE11 安全设置阻止
- 为用户应用程序托管 javascript 文件是否安全
- ANT:检查文件是否为空
- Extjs 抛出错误“请验证文件是否存在”
- http(localhost或remote)提供的文件是否可以从通过file://protocol打开的本地文件访问?反
- 如何检查内容txt文件是否已更改
- 方法来查看jQuery文件是否已完全加载,然后执行与其相关的函数
- 如何知道向iframe提交表单和文件是否失败
- Node js在复制之前检查文件是否打开
- 是否可以检查文件是否返回 404 错误,如果它位于具有 javascript 或 jQuery 的不同服务器上
- 如何检查闪存文件是否停止使用 javascript
- 是否有任何工具可以检查js文件是否可以安全压缩
- 检查文本文件是否包含带有javascript的内容
- 拥有多个 HTML 页面通常使用的单独 javascript 文件是否会加快页面加载速度
- 根据页面分隔JS文件是否是一种好的做法
- JavaScript 使用 Google 地图 API 检查文件是否存在
- 检查目标文件是否已存在
- 帆 JS 检查上传文件是否已发送