了解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