http 請求的時間
$ http 請求需要的時間因伺服器而異,有些可能需要幾毫秒,有些可能需要幾秒鐘。通常,從請求中檢索資料所需的時間至關重要。假設響應值是一個名稱陣列,請考慮以下示例:
不正確
$scope.names = [];
$http({
method: 'GET',
url: '/someURL'
}).then(function successCallback(response) {
$scope.names = response.data;
},
function errorCallback(response) {
alert(response.status);
});
alert("The first name is: " + $scope.names[0]);
訪問$ http 請求正下方的 $scope.names[0]
通常會丟擲錯誤 - 這段程式碼在從伺服器收到響應之前執行。
正確
$scope.names = [];
$scope.$watch('names', function(newVal, oldVal) {
if(!(newVal.length == 0)) {
alert("The first name is: " + $scope.names[0]);
}
});
$http({
method: 'GET',
url: '/someURL'
}).then(function successCallback(response) {
$scope.names = response.data;
},
function errorCallback(response) {
alert(response.status);
});
使用 $ watch 服務,我們只在收到響應時訪問 $scope.names
陣列。在初始化期間,即使之前初始化了 $scope.names
,也會呼叫該函式,因此檢查 newVal.length
是否與 0 不同是必要的。請注意 - 對 $scope.names
所做的任何更改都將觸發監視功能。