Javascript $scope值在$interval中不可预测

Javascript $scope值在$interval中不可预测,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我想无限期地循环一个JSON数组(下面名为playbook) 我有以下代码: $scope.loadPlaybook = function () { $http.get('/static/lib/playbook.json') .then(function (res) { $scope.data.playbook = res.data; console.log('Playbook data:', $scope.data.p

我想无限期地循环一个JSON数组(下面名为playbook)

我有以下代码:

$scope.loadPlaybook = function () {
    $http.get('/static/lib/playbook.json')
        .then(function (res) {
            $scope.data.playbook = res.data;

            console.log('Playbook data:', $scope.data.playbook);

            $interval(function () {
                console.log('Trying to access from $interval:', $scope.data.playbook);
            }, 1000);
        },
        function (err) {
            // ..
        });
};
有时,
$scope.data.playbook
是在
$interval
回调中定义的,大多数情况下不是这样

70%的时候,当我加载页面时,输出如下所示:

在我加载页面的30%时间内,输出如下所示:


我使用的是Angular 1.5.1和Google Chrome。

这可能无法直接回答您的问题,但据我所知,请注意,
console.log()
显示了对象在运行时作为参数传递的预览,然后当您单击控制台中显示的预览时,它将使用当前对象状态进行更新。如果希望在某个时间查看对象的状态,可以
console.log(angular.copy(sourceObj))
。您可以将这两者结合起来检查$scope.data在最初设置后是否被其他地方覆盖


希望有帮助

这可能无法直接回答您的问题,但据我所知,请注意,
console.log()
在对象运行时显示作为参数传递的对象的预览,然后当您单击控制台中显示的预览时,该对象将更新为当前对象状态。如果希望在某个时间查看对象的状态,可以
console.log(angular.copy(sourceObj))
。您可以将这两者结合起来检查$scope.data在最初设置后是否被其他地方覆盖


希望有帮助

尝试记录$scope.data并展开,然后展开数据,查看您拥有所有数据。尝试记录$scope.data并展开,然后展开数据,查看您拥有所有数据。