我在循环中调用了一个不属于我的异步函数。我需要在'then'函数中检索变量。我是这样做的:
for(var int = 0; int < attachments.length; int++) {
dp.getAttachment(attachments[int]).then(function (response) {
console.log(int);
});
}
如何发送int以便我可以在函数内部获取它?
答案 0 :(得分:4)
问题是错误地使用了closure variable in a loop。
这里因为你有一个数组,你可以使用forEach()来迭代它来创建一个局部闭包
attachments.forEach(function (item, it) {
dp.getAttachment(item).then(function (response) {
console.log(int);
});
})
答案 1 :(得分:1)
使用闭包功能,您可以确保在调用int
回调时可以获得then
变量的每个值的副本。
for(var int = 0; int < attachments.length; int++) {
(function(int) {
dp.getAttachment(attachments[int]).then(function (response) {
console.log(int);
});
})(int);
}