2017-03-17 115 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); 
    }; 

不知道如果這些都是角世界上最好的做法,雖然,我只是想說明這是怎麼回事用這個例子。