访问可变间隔

时间:2015-03-09 09:41:52

标签: javascript angularjs global-variables

我怎样才能获得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)返回undefined。

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

2 个答案:

答案 0 :(得分:0)

您错过了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);

答案 1 :(得分:0)

由于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);

如果您遇到异步流程问题,可以在此stackoverflow answer

中查看这个优秀的非编程示例