我正在使用Google Endpoints和使用AngularJS的Javascript客户端进行一些测试。
<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控制器的渲染。 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之前检查服务是否可用?
谢谢,
萨姆
答案 0 :(得分:2)
gapi.client.load()不提供错误回调。 $ timeout调用可能是处理此问题的最佳方法。在调用gapi.client.load()之前,设置一个$ timeout,输出一个错误,比如5或10秒(无论你认为合理)。如果gapi.client.load()成功,则清除$ timeout,因此不输出错误。