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 所做的任何更改都将触发监视功能。