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 所做的任何更改都將觸發監視功能。