var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}Run Code Online (Sandbox Code Playgroud)
它输出这个:
我的价值:3
我的价值:3
我的价值:3
而我希望它输出:
我的价值:0
我的价值:1
我的价值:2
使用事件侦听器导致运行函数的延迟时,会出现同样的问题:
var buttons = document.getElementsByTagName("button");
// let's create 3 …Run Code Online (Sandbox Code Playgroud)我一直试图等待Angular的$ q的几个承诺,但似乎没有选择'等待所有即使被拒绝的承诺'.我创建了一个例子(http://jsfiddle.net/Zenuka/pHEf9/21/),我希望在所有承诺被解决/拒绝时执行一个函数,这可能吗?就像是:
$q.whenAllComplete(promises, function() {....})
Run Code Online (Sandbox Code Playgroud)
编辑:在示例中,您看到第二个服务失败,并且在此之后立即$q.all().then(..., function(){...})执行函数.我想等待第五个承诺完成.