Kim*_*Man 3 javascript timeout intervals angularjs
我正在学习AngularJS.
我想要做的是在$ timeout的for循环中执行一个方法.
这是一个例子:
for(var i = 0; i < 10; i++) {
$timeout(function(i) {
someMethod(i);
}, 1000);
}
function someMethod(i) {
console.log('Executed : ', i);
}
Run Code Online (Sandbox Code Playgroud)
但我不能传递变量'i'.我怎样才能做到这一点?另外,我想知道如何用Angular $ interval()来解决这个问题.
谢谢!
你需要将它包装在一个闭包函数中,传入i变量,然后它将在该新函数的范围内变得可用..例如
for(var i = 0; i < 10; i++) {
(function(i){ // i will now become available for the someMethod to call
$timeout(function() {
someMethod(i);
}, i * 1000);
})(i); // Pass in i here
}
function someMethod(i) {
console.log('Executed : ', i);
}
Run Code Online (Sandbox Code Playgroud)
请记住,$ timeout只是setTimeout的可测试性包装器.所以请参阅http://jsfiddle.net/f1yfy6ac/3/以实现此目的.
如果你想使用$ interval而不是那么你可以使用:
$interval(someMethod, 1000)
Run Code Online (Sandbox Code Playgroud)
无论如何,这将通过我.您不需要在循环中使用它.