获取可变区间

Access to variable interval

我怎样才能得到 qLength :

var intervalPromise = $interval( function (){
    $http.get(request).success(function (datatemp) {                    // Get Queue info JSON every 2s
        if (angular.equals(store.queues, datatemp)) {               //if like the last, no change
            console.log('Same values');
            qLength =  store.queues.Jobs.length;
        } else {                                                    //Else, update
            store.queues = datatemp;
            console.log('Values updated')
        }
    });
}, 3000, 0);

console.log(qLength);

console.log(qLength) return 未定义。

当我尝试使用 window 时,结果相同。

您没有为 qLength

分配变量

试试下面的代码

**var qLength="";**
var intervalPromise = $interval( function (){
    $http.get(request).success(function (datatemp) {                    // Get Queue info JSON every 2s
        if (angular.equals(store.queues, datatemp)) {               //if like the last, no change
            console.log('Same values');
            qLength =  store.queues.Jobs.length;
        } else {                                                    //Else, update
            store.queues = datatemp;
            console.log('Values updated')
        }
    });
}, 3000, 0);

console.log(qLength);

你无法通过这种方式获得qLength,因为$interval()$http.get()请求是运行异步的。您正在尝试访问一个只能以同步方式异步访问的值。获取所需值的一种简单方法是创建一个接受长度本身的函数,并在请求完成时调用它。

var qLengthCheck = function(length) {
  // This logs the length in each interval
  console.log(length);
};

var intervalPromise = $interval( function (){
    $http.get(request).success(function (datatemp) {                    // Get Queue info JSON every 2s
        if (angular.equals(store.queues, datatemp)) {               //if like the last, no change
            console.log('Same values');
            qLength =  store.queues.Jobs.length;
        } else {                                                    //Else, update
            store.queues = datatemp;
            console.log('Values updated')
        }

        qLengthCheck(length);
    });
}, 3000, 0);

如果您在异步进程方面遇到问题,您可以在这个 Whosebug answer

中查看这个很好的非编程示例