Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript wait until variable is set [duplicate]

Can you make a function wait until a variable is set by another function? This is my example:

function setvar(){
 //some process that may take a while
 myvar = 'value';
}

const promise1 = new Promise((resolve, reject) => {
  resolve(myvar);
});

promise1.then((value) => {
  console.log(value);
});

this doesnt seem to work, the function begins even if the variable is not ready. What should I do? I dont want settimeout or setinterval because I dont know exactly how long it is going to take each time.

like image 284
gobler Avatar asked Aug 11 '26 09:08

gobler


1 Answers

In the promise you'll need create a loop that would check if variable was set:

var myvar;
function setvar(){
 //some process that may take a while
 myvar = 'value';
}

const promise1 = new Promise((resolve, reject) => {
  const loop = () => myvar !== undefined ? resolve(myvar) : setTimeout(loop)
  loop();
});

promise1.then((value) => {
  console.log(value);
});


setTimeout(setvar, 2000);
like image 54
vanowm Avatar answered Aug 13 '26 23:08

vanowm