函数返回undefined而不是Boolean

时间:2017-03-17 19:57:39

标签: javascript angularjs

我有一个函数检查提供的链接是否可访问,并返回一个布尔值。

$scope.isReachable = function(uri) {
    var url = 'http://example.com/file.pdf';

    $http({
      method: 'GET',
      url: url
     })
     .success(function(data, status, headers, config) {
      console.log("I See it");
      return true;
    })
     .error(function(data, status, headers, config) {
      console.log("I don't");
      return false;
     });
  };

我做了很多函数,返回语句很好,但是这个。我不知道为什么,但对我来说似乎很奇怪。我不太确定它是否是$ http功能,但它不重要,对吧? 我可以看到控制台消息但是布尔值。

1 个答案:

答案 0 :(得分:1)

这些return语句返回内部它们所属的函数,这是传递给successerror的匿名函数。

isReachable函数不返回任何值。它的作用就是执行请求并传递两个回调。

我没有其余代码的上下文,但这是异步编程,您正在执行请求并传递回调。在我看来,最好的方法是将回调传递给isReachable函数,如下所示:

var isReachableCallback = function(data, status, headers, config) {
  console.log("I See it");
  return true;
};

var isNotReachableCallback = function(data, status, headers, config) {
  console.log("I don't");
  return false;
};

$scope.isReachable = function(uri, isReachableCallback, isNotReachableCallback) {
    var url = 'http://example.com/file.pdf';

   return $http({
      method: 'GET',
      url: url
     })
     .success(isReachableCallback)
     .error(isNotReachableCallback);
  };

不确定这些是否是Angular世界中的最佳做法,我只是想说明这个例子发生了什么。