我怎样才能让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)返回未定义的。
当我尝试使用窗口时,结果是一样的。
发布于 2015-03-09 11:02:49
您无法以这种方式获得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中检查这个好的非编程示例。
发布于 2015-03-09 09:59:00
您错过了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);https://stackoverflow.com/questions/28938867
复制相似问题