Angular $http 请求超时未在 iOS 10 cordova 上的错误函数中捕获

Angular $http request timeout not caught in error function on iOS 10 cordova

这发生在 Safari iOS 10 Cordova:6.3.1

请求使用 Angular$http,未调用错误函数

$http.get("http://10.255.255.1").then(function(res){
   console.log("res: " + res);
},function(err){
   console.log("err: " + err);
});

Promise {$$state: {status: 0}, then: function, catch: function, finally: function}

控制台:加载资源失败:请求超时。 (10.255.255.1, 第 0 行)


使用 XMLHttpRequest 的请求捕获超时错误

var xhr = new XMLHttpRequest(); xhr.onload = function () { 
    console.log("request finished") 
}; 
xhr.ontimeout = function (e) { 
    console.log("request timeout") 
}; 
xhr.open('GET', 'http://10.255.255.1', true);
xhr.send(null); 

控制台:请求超时

仅供参考: http://10.255.255.1 是我用来测试超时的 url。 资料来源:Artificially create a connection timeout error

XMLHttpRequest 会在 60 秒后抛出错误,即使您增加超时也是如此。

所以这是一个 iOS 10 WebView 的东西,我相信这是不可配置的。

在 Angular 中,如果您提供的超时 属性 小于 60 秒,则会正确抛出错误。

似乎仍然是 Angular 中的错误。在 WebView 请求超时后它仍然应该抛出错误。