如果由于任何原因服务不可用,gapi.client是否应该正常失败?
我正在使用Google Endpoints和使用AngularJS的Javascript客户端进行一些测试。
以下代码将Endpoint库注入Angular:
<script>
function apiCallback() {
console.log('test');
var apisToLoad = 1; // must match number of calls to gapi.client.load()
var gCallback = function () {
if (--apisToLoad == 0) {
//Manual bootstraping of the application
var $injector = angular.bootstrap(document, ['anatelFront']);
}
};
gapi.client.load('anatel', 'v1', gCallback, '//localhost:8080/_ah/api');
}
</script>
<script src="https://apis.google.com/js/client.js?onload=apiCallback"></script>
主控制器编码如下:
anatelFront.controller('MainCtrl', ['$scope',
function ($scope) {
$scope.filter = 0;
try {
gapi.client.anatel.directors.listDirectors({'filter':
$scope.filter}).execute(function(resp){
if (resp.queryResult){
$scope.directors = angular.fromJson(resp.queryResult);
console.log($scope.directors);
}
});
}
catch (e) {
console.log(e);
}
}]);
我在本地运行GAE(在Linux上为Python),当我关闭开发服务器进程时,Angular Controller中断,浏览器返回运行时错误,因此破坏了Angular Controller的呈现。 Angular是最新版本。
在浏览器控制台上显示的错误:
GET http://localhost:8080/_ah/api/static/proxy.html?jsh=m%3Y1Mqg net::ERR_CONNECTION_REFUSED
zk
c
(anonymous function)
f
gapi.client是否应该正常失败?
我是在做错事还是在做我应该做的事,例如在执行gapi.client之前检查服务是否可用?
谢谢,
山姆
最佳答案
据我所知,gapi.client.load()不提供错误回调。 $ timeout调用可能是解决此问题的最佳方法。就在调用gapi.client.load()之前,设置一个$ timeout,它会在5或10秒(无论您认为合理的时间)之后输出错误。然后,如果gapi.client.load()成功,则清除$ timeout,这样就不会输出错误。
关于javascript - 如果服务不可用,gapi.client是否应该正常失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24297210/