Here is my following code block. I am passing my val
object from function test1
to test2
and modify its value in test2
and send it back.
var Promise = require("bluebird");
var list = [1,2,3];
var test1 = function(test) {
return new Promise(function(resolve,reject) {
var val = {"name" : "my_name","age" : 25};
for (var item in list) {
(function (item) {
console.log("val",val);
test2(val)
.then(function(test2Response) {
console.log("test2Response",test2Response)
});
})(item)
}
});
};
var test2 = function(val1) {
return new Promise(function(resolve,reject) {
console.log("val1",val1)
val1.name = val1.name + "_1"
resolve(val1)
})
}
test1()
And here is my value of my variables val
and val1
at various stages.
val { name: 'my_name', age: 25 }
val1 { name: 'my_name', age: 25 }
val { name: 'my_name_1', age: 25 }
val1 { name: 'my_name_1', age: 25 }
val { name: 'my_name_1_1', age: 25 }
val1 { name: 'my_name_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
test2Response { name: 'my_name_1_1_1', age: 25 }
I couldnt understand why the value of val changes for every iteration even though I update only val1
not val
. How can I maintain the val
intact and modify only 'val1`?