我怎样才能获得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。
当我尝试使用窗口时,结果相同。
答案 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
中查看这个优秀的非编程示例