了解异步回调
Understanding asynchronous callbacks
我是异步编程的新手,很难理解这个概念。请帮忙!!!
我想出了一个简单的例子:
对于(var i=1;i<=10;i++){
nbsp;setTimeout(函数(){
nbsp nbsp;console.log(i)
nbsp;},1000)
}
我只想按升序打印索引,但由于setTimeout强制执行异步操作,我将最后一个索引打印10次。
我理解为什么会发生这种事。。。
不管我试过什么(我认为我的误解不需要详述),我都没能解开这个愚蠢的谜题。。。
我显然错过了一些基本的东西。请帮我弄清楚。
这是因为所有这些函数在调用它们时都使用相同的变量i
,该变量等于10
。试试这样的东西:
for (var i = 1; i <= 10; i++) {
setTimeout((function (k) {
return function(){
console.log(k);
}
}(i)), 1000);
}
这是因为JavaScript有闭包。您可以在此处阅读有关它们的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
相关文章:
- Meteor:异步回调问题
- Meteor:异步函数回调异常:onAfterAction
- 异步中的回调函数出现问题'张贴'
- JavaScript中的异步回调
- 如何将此异步回调转换为生成器
- 在Nodejs中堆叠异步回调事件的最佳方式
- 如何使用jQuery等待来自回调的异步调用
- 从异步回调中获取值
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- 将数据注入异步回调(使用 node.js)
- 由于异步回调,变量被覆盖
- 与 promise 一起使用时,异步瀑布不执行下一个回调方法
- 如何将状态对象/数据传递给(异步)ajax 回调
- 管理Meteor中的异步回调
- 如何通过一个回调异步排队和执行多个promise
- 如何等到异步回调完成后才能使用检索到的数据
- 如何在node.js中通过API回调异步递归
- 将数据传递给node.js回调——异步问题
- 从回调(异步方法)内部访问对象文字属性
- 使 JavaScript 函数与回调异步