如何给回调函数一个值一个变量在特定时刻
How to give a callback function a value a variable has at a specific moment
我有问题,有一个回调函数,我想传递另一个变量。但是当回调函数执行时,变量发生了变化。我该如何解决这个问题?
for (var i = 0; i < data.items.length; i++) {
var item = data.items[i];
p.api.get('items.info', {
itemId: item.id
}, function (response, item.id) {
alert(item.id);
alert(response["tags"][0]["tag"]);
});
}
这就是我所说的函数。如果有人能帮我,我会很高兴的。
匿名函数使用在循环中更改的上下文。这是一个常见的"问题",有几个"修复":
1 .bind()
:
p.api.get('items.info', {
itemId: item.id
}, (function (response) {
// item now comes from `this.item`, not `item`
}).bind({item: item}));
2 IIFE(或者不管他们现在叫什么):
p.api.get('items.info', {
itemId: item.id
}, (function(item) {
return function (response) {
// item is now in `item` because a new context was created
};
})(item));
都有点难以阅读和不直观。肯定有更好的方法,但这取决于你的应用结构。(也许你可以将上下文传递给。get() ' ?)
您可以简单地将它放入闭包中:
for (var i = 0; i < data.items.length; i++) {
(function(i) {
var item = data.items[i];
p.api.get('items.info', {
itemId: item.id
}, function (response, item.id) {
alert(item.id);
alert(response["tags"][0]["tag"]);
});
})(i);
}
相关文章:
- 一个定时器事件会在多大程度上减慢我在JavaScript中的代码
- 创建一个带有按钮的定时滑块,这些按钮可以影响表格不同部分的文本和图像
- Jquery:做一个间隔,定时,然后再次间隔
- 为什么定时器setTimeout返回第一个值“;2〃;.代码下方的
- 如何制作一个页脚,当内容很短但在CSS中不固定时,它会粘在底部
- 是否有可能在jscript中创建一个定时器,您可以手动更改而不受时区的影响
- 如何使一个定时自动内容切换
- Selenium RC (Python)只将文本发送到页面上的一个定时控件
- 我可以添加一个定时器到这个Javascript代码
- 我如何突出文本-严格定时-一个la卡拉ok没有Flash在网页上.什么技术选择
- 使用一个带有执行的定时器来执行一个jquery页面折叠器
- 当它应该是一个定时事件时,音频播放加载
- 滑块上的一个定时器JavaScript
- Meteor / Node.js:多个http请求在一个for循环中,均匀地跨越一个定时间隔
- 转轮连接到一个定时器Android
- 图像更改点击Javascript,我可以添加一个定时器更改以及
- JS OOP -由对象创建多个定时器,但只有一个有效
- 创建一个定时的Greasemonkey脚本
- JS创建一个定时器来隐藏图像幻灯片
- 开始一个定时器时钟后,另一个和循环它使用javascript