【发布时间】:2016-09-13 10:38:03
【问题描述】:
我正在尝试对加载时间过长的页面进行 Ajax 调用。我想等待数据加载,但火狐在两分钟后超时。在网络上,您会找到屏幕截图中的设置,但这无济于事(我已经重新启动了 firefox)。如何确保 firefox(或任何其他浏览器)等待调用加载?
当然这只是一个临时解决方案,但我希望它现在可以工作。
【问题讨论】:
标签: javascript angularjs ajax firefox timeout
我正在尝试对加载时间过长的页面进行 Ajax 调用。我想等待数据加载,但火狐在两分钟后超时。在网络上,您会找到屏幕截图中的设置,但这无济于事(我已经重新启动了 firefox)。如何确保 firefox(或任何其他浏览器)等待调用加载?
当然这只是一个临时解决方案,但我希望它现在可以工作。
【问题讨论】:
标签: javascript angularjs ajax firefox timeout
ajax调用时使用超时参数
【讨论】:
维克拉姆说得对,它不是浏览器。它在 Angular 中。我不知道 Angular,所以我必须破解。我将向您展示我的技巧,但不要使用它。将其视为寻找更好解决方案的提示。此外,您可能不需要以下所有代码更改即可获得有效的 hack。
angular.js
function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) {
// TODO(vojta): fix the signature
return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
// DO NOT COMMIT :) (added line)
timeout = 5000001; // added line
$browser.$$incOutstandingRequestCount();
url = url || $browser.url();
....
function timeoutRequest() {
jsonpDone && jsonpDone();
xhr;// && xhr.abort();
}
app.js:
angular.module('MyApp', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.timeout = 5000;
}]);
但此外,我的 vagrant 机器的代理导致超时: https://github.com/drewzboto/grunt-connect-proxy
web-incoming.js
function timeout(req, res, options) {
// DO NOT COMMIT
req.socket.setTimeout(600000);
//if(options.timeout) {
// req.socket.setTimeout(options.timeout);
//}
},
【讨论】: