gpt4 book ai didi

javascript - 在 for 循环中使用 Angular 的 $timeout 执行方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:14:45 25 4
gpt4 key购买 nike

我正在学习 AngularJS。

我想做的是在带有 $timeout 的 for 循环中执行一个方法。

例子如下:

for(var i = 0; i < 10; i++) {
$timeout(function(i) {
someMethod(i);
}, 1000);
}

function someMethod(i) {
console.log('Executed : ', i);
}

但是我不能传递变量“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);
}

请记住 $timeout 只是 setTimeout 的可测试性包装器。所以看http://jsfiddle.net/f1yfy6ac/3/为此行动。

如果您想使用 $interval 代替,那么您可以使用:

$interval(someMethod, 1000) 

无论如何这都会传入 i 。您不需要在循环中使用它。

关于javascript - 在 for 循环中使用 Angular 的 $timeout 执行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com