這裏的主要問題是在什麼情況下調用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