I am writing Node.JS lambda function, where I need to invoke some API funciton with callback and pass there additional parameters.
The code looks like:
var s3 = ...;
for (var i = 0; i < data.foo.length; i++) {
var v1 = data.foo[i].name;
console.log("Loop: " + v1);
var params = { ... };
foo.method1(params, function(err, data1) {
console.log("Method1: " + v1);
s3.putObject(....);
});
}
Here are two problems.
I do not understand why, but inside the callback passed to
foo.method1...I have always the same value ofv1(I guess that it is the last one from the array).The Code checker of Amazon console advises me that it is a bad practice to create a function within a loop:
Don't make functions within a loop.
I guess, that p.1 is somehow related to p.2 :-) That is why I've tried to create a named function and pass its reference to foo.method1. But it doesn't work as I can't pass additional parameters v1 and s3 there. I can only wrap its call like:
foo.method1(params, function(err, data1) {
myCallback(err, data1, v1, s3);
});
- what doesn't make sense, as the result is the same.
Hint: foo.method1 is apparently asynchronous.
I doubt how to solve this issue?