因此,我正在編寫一個使用RequireJS和Socket.io的應用程序,檢查socket.io資源是否可用,然後在連接時引導應用程序。如果socket.io曾經暫時關閉,我希望有幾次需要輪詢資源,直到它可用,然後繼續初始化應用程序。RequireJS提供的資源輪詢
不幸的是(或者幸運的是?)似乎有某種緩存機制需要爲不加載的腳本註冊腳本管理器,以便在錯誤回調中執行setTimeout來重新調用socketio require功能即使資源可用,require也會繼續拋出錯誤。
這是疏忽還是有理由讓這個錯誤緩存?更重要的是,是否有解決方法來允許需要重新調整?
這裏是什麼,我一直想一個例子:
function initialize() {
require(['socketio', function(io) {
io.connect('http://localhost');
app._bootstrap();
}, function(err) {
console.log(err);
setTimeout(initialize, 10000);
});
}
認爲它更像是一個概念性問題,但我更新了該文章的快速剪輯。 – zigzackattack
Socketio映射到我的require.config中的正確位置。我的腳本可用的原因是該應用程序在Drupal(在apache上)運行,但取決於節點/ socket.io服務,我相信這個服務有時會失效。這不是必須的,但是如果應用程序在節點服務器恢復後立即在瀏覽器中啓動(假設用戶進入頁面時它已關閉),我認爲這將很酷。 – zigzackattack