【发布时间】:2013-07-10 01:28:46
【问题描述】:
所以我正在使用 RequireJS 和 Socket.io 编写一个应用程序,它会检查 socket.io 资源是否可用,然后在连接时引导应用程序。如果 socket.io 暂时出现故障,我想让 requireJS 轮询资源几次,直到它可用,然后继续初始化应用程序。
不幸的是(或者可能是幸运的?)似乎在 require 中有某种缓存机制可以为未加载的脚本注册脚本错误,因此如果您在错误回调中执行 setTimeout 来重试 socketio require 函数,即使资源可用,require 也会继续抛出错误。
这是疏忽还是有理由将此错误缓存起来?更重要的是,是否有允许要求重试的解决方法?
这是我一直在尝试的一个示例:
function initialize() {
require(['socketio', function(io) {
io.connect('http://localhost');
app._bootstrap();
}, function(err) {
console.log(err);
setTimeout(initialize, 10000);
});
}
【问题讨论】:
-
认为这更像是一个概念性问题,但我已经快速更新了帖子。
-
Socketio 映射到我的 require.config 中的正确位置。我的脚本可用的原因是该应用程序在 Drupal 中运行(在 apache 上),但依赖于 node/socket.io 服务,我相信它有时会失败。这不是必须的,但我认为如果应用程序在节点服务器恢复后立即在浏览器中启动会很酷(假设用户访问页面时它已关闭)。
标签: javascript node.js requirejs amd socket.io