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