直接贴代码:
var logininfo = []; //初始化定时器数组
for(var i = 0; i < $scope.qrcodes.length; i++){
logininfo[i] = self.setInterval(getloginfo,3000);
}
function getloginfo(){
uuid = $scope.qrcodes[i];
statusservice.getstatus(uuid).then(function (result) {
switch(result){
case 200 : $scope.loginstatus[i] = '登录成功';break;
case 500 : $scope.loginstatus[i] = '服务器错误';break;
case 400 : $scope.loginstatus[i] = '正在登录';break;
default : $scope.loginstatus[i] = '无消息';break;
}
if($scope.loginstatus[i] == '登录成功') {
self.clearInterval(logininfo[i]);
}
console.log($scope.loginstatus[i]);
},function (err) {
console.log(err);
})
}
这里有几个点需要get一下,
setinterval 是已经正常执行了的。 console.log($scope.loginstatus[i]); 能够无限循环的打印出预期的结果
if($scope.loginstatus[i] == '登录成功') 这个判断也正常执行了,但是内部的clearinterval感觉执行失败了,函数还是在不断的循环下去。
作用域问题,你这个时候的人i一直都是$scope.qrcode.length ,自然不能清楚定时器