如果由于任何原因服务不可用,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/

10-11 02:42