将变量传递给承诺的函数

时间:2015-04-17 04:43:01

标签: javascript node.js

我在循环中调用了一个不属于我的异步函数。我需要在'then'函数中检索变量。我是这样做的:

    for(var int = 0; int < attachments.length; int++) {
        dp.getAttachment(attachments[int]).then(function (response) {
            console.log(int);
        });
    }

如何发送int以便我可以在函数内部获取它?

2 个答案:

答案 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);
}