我有一个函数检查提供的链接是否可访问,并返回一个布尔值。
$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)
这些return语句返回内部它们所属的函数,这是传递给success
和error
的匿名函数。
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世界中的最佳做法,我只是想说明这个例子发生了什么。