I want to get 1 3 2 output for this code, with and without usign promises.
let data = 1;
console.log(data);
data = 2;
setTimeout((data) => {
console.log(data);
}, 2000);
data = 3;
console.log(data);
let data = 1;
console.log(data);
data = 2;
setTimeout((data) => {
console.log(data);
}, 2000,data);
data = 3;
console.log(data);
this code gives output 1 3 2, as expected, but
console.log(data);
data = 2;
setTimeout(() => { // argument removed from callback function
console.log(data);
}, 2000,data);
data = 3;
console.log(data);
this code is giving output 1 3 3, but why? Why this callback function is not using data agrument passed in setTimeout.
I also used promise but still getting the 1 3 3 as output.
let data=1;
console.log(data);
data=2;
temp=new Promise((resolve, reject)=>{
// async code
setTimeout(()=>{
resolve(data);
},2000);
})
temp.then((temp)=>{
console.log(temp);
}).catch((err)=>{console.log(err);}
);
data=3;
console.log(data);