2017-03-17 81 views
0

我有一个函数,用于检查提供的链接是否可达,并返回一个布尔值。函数返回undefined而不是布尔值

$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函数,但它应该没关系,对吧? 我可以看到控制台消息,但布尔值。

+0

你是怎么称呼它的? “成功”和“错误”已经过时(现在一年或更长时间),并且从1.6版开始不再包含 – Igor

回答

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); 
    }; 

不知道如果这些都是角世界上最好的做法,虽然,我只是想说明这是怎么回事用这个例子。