スクリプトの読み込みに時間がかかりすぎると、私のサイトの動作をテストしようとしています。私はホストファイルに何かを追加することによって404を返すように要求を完全にブロックする方法を知っていますが、要求を完全に完了させないように強制する方法はわかりません。AJAXコールをハングする方法
例、
127.0.0.1 translate.google.com # this blocks google translate from loading (404)
代わりに、私はtranslate.google.com がx秒間を応答しないようにしたいと思います。
私は私のスクリプトをロードするためにrequirejsを使用してだと私はそのタイムアウトに気付いてることは、私はホストファイルを経由して、それをブロックしたときに、私はGoogleが、必要に応じて必要とされるように変換できるようにするモジュールを追加した404
とは異なる動作し、 、サイトは正しく動作します。スクリプトがタイムアウトすると、サイトは読み込まれません。
// http://stackoverflow.com/questions/14164610/requirejs-optional-dependency
define("optional", [], {
load: function (moduleName, parentRequire, onload, config) {
var onLoadSuccess = function (moduleInstance) {
// Module successfully loaded, call the onload callback so that
// requirejs can work its internal magic.
onload(moduleInstance);
}
var onLoadFailure = function (err) {
// optional module failed to load.
var failedId = err.requireModules && err.requireModules[0];
console.warn("Could not load optional module: " + failedId);
// Undefine the module to cleanup internal stuff in requireJS
requirejs.undef(failedId);
// Now define the module instance as a simple empty object
// (NOTE: you can return any other value you want here)
define(failedId, [], function() { return {}; });
// Now require the module make sure that requireJS thinks
// that is it loaded. Since we've just defined it, requirejs
// will not attempt to download any more script files and
// will just call the onLoadSuccess handler immediately
parentRequire([failedId], onLoadSuccess);
}
parentRequire([moduleName], onLoadSuccess, onLoadFailure);
}
});
テストしようとしていることを詳しく説明できますか?あなたは 'onLoadSuccess'コールバックハンドラの' onload'メソッドの呼び出しを、 'setTimeout(()onload(moduleInstance)、4 * 1000)'のようなものを使って4秒遅れて遅らせることができます。 – alpeware
スクリプトがタイムアウトしたときに何が起こるかをテストしようとしています。 404が返ってくると、正しく動作します。タイムアウトすると正しく動作しません。 – MPavlak