我使用 Angular $timeout作为,
$scope.alltexts = ["hii" , "hello" , "hehe"]
var sendtime = 60000
for (var i = 0; i < $scope.alltexts.length; i++) {
var text = $scope.alltexts[i]
$setTimeout(function() {}, (function(){$scope.addtext(text)}, sendtime + (i * 60000)));
};
$scope.addtext = function(text){
console.log(text)
}
但是每一分钟之后它只会安慰“呵呵”。意味着它只考虑最后一个值。请让我知道我应该如何获得正确的结果。
最佳答案
今天的闭包
太多了,你总是传递最后一个索引...闭包
将为每次迭代创建一个新的范围
。
$scope.alltexts = ["hii" , "hello" , "hehe"]
var sendtime = 60000
for (var i = 0; i < $scope.alltexts.length; i++) {
(function(i){
var text = $scope.alltexts[i]
$setTimeout(function() {}, (function(){$scope.addtext(text)}, sendtime + (i * 60000)));
})(i)
};
$scope.addtext = function(text){
console.log(text)
}
关于angularjs - 循环内的 Angular $timeout 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36647102/