了解asynchronouscallback

我是新来的asynchronous编程,我很难得到这个概念。 请帮忙!!!

我拿出一个简单的例子:

for(var i = 1; i <= 10; i ++){
setTimeout(function(){
的console.log(ⅰ);
},1000);
}

我想要的是按升序打印索引,但由于setTimeout强制asynchronous操作​​,我得到的最后一个索引打印了10次。

我明白为什么发生这种情况

无论我尝试了什么(我不认为我的误解需要阐述),我没有解决这个愚蠢的谜语…

我显然缺less一些基本的。 请帮我弄清楚。

这是因为所有这些函数在调用它们时都使用相同的variablesi ,等于10 。 尝试这样的事情:

 for (var i = 1; i <= 10; i++) { setTimeout((function (k) { return function(){ console.log(k); } }(i)), 1000); } 

这是因为JavaScript已经closures了。 你可以在这里阅读: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures