这里的主要问题是在什么情况下调用require(arrayOfPaths,onSuccess,onError)导致onSuccess回调被一个对象调用,而不是模块返回一个对象有两种方法:attach和notNeeded? 第二个问题是,这些attach()和notNeeded()方法做了什么?requirejs返回一个带有attach和notNeeded方法的模块
我找不到这些文件。
这种情况的再现非常简单。我在一些使用require方法加载的Web服务器上有一个AMD模块(TypeScript)。该调用第一次工作,可用于多个其他AMD模块的多个需求调用。但是,如果我刷新页面,该页面使用我的逻辑再次进行require调用,它不会返回我的AMD模块,而是返回上面描述的对象。
我的假设是,返回的对象是对象的缓存版本,如果我打电话给attach()它会给我缓存的对象。但我还没有测试过。
下面是几个将“缓存”想法抛出窗口的东西: 1.这是一个浏览器刷新(不是Ctrl + R样式),但仍然是刷新,这意味着页面已加载,任何脚本由于requirejs添加的标记应该消失 2.我要提供给require调用的路径有一个?ts = where = new Date()。getTime()
所以,第一次调用的路径和调用可以是:
require(["http://someurl/provider.js?ts=123"], onSuccess, onError);
和在第二呼叫,它可能是:
require(["http://someurl/provider.js?ts=124"], onSuccess, onError);
你“无法找到任何有关这些文件”,因为这不是RequireJS的事情。如果您想解决问题,请制作[mcve](http://stackoverflow.com/help/mcve)。 – Louis
我会尝试创建一个mcve,但这需要一些时间。我只能做这样的事情。 你怎么确定它不是RequireJS的东西?我描述的行为/工件直接来自require调用。你能否详细说明你的结论:它不是RequireJS的东西? – jgo