获取可变区间
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
中查看这个很好的非编程示例
我怎样才能得到 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
中查看这个很好的非编程示例