'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.



Solution 1:[1]

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);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1