Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

207
Views
Trying to understand the differences across these promises and setTimeouts

I'm learning about promises, setTimeout and async calls and have done a great job of confusing myself. I think I'm lacking some understanding around the callback and how setTimeout works. I've been looking at Mozilla documentation and the various Stackoverflow posts regarding these topics. I'm still having some trouble wrapping my head around why some of the functions I've created behave the way they do regarding the timeouts that are set.

Between wait0 and wait1 I don't understand why the timeout for wait0 works properly and wait1 doesn't adhere to it. With wait2 it is like wait1 except wrapped in an arrow function expression. Why does that make the timeout work properly? wait3 isn't actually using the callback so that makes sense why the promise and then functions don't do anything. But it stops wait4 from running. Is it blocking progression indefinitely or actually ending execution? For wait4 I'm also not passing a value into the callback like with wait0 but the timeout isn't being adhered to.

function wait0() {
    return new Promise((resolve, failure)=>{
    setTimeout(resolve, 2000);
  });
}

function wait1() {
    return new Promise((resolve, failure)=>{
    setTimeout(resolve('resolved ' + new Date().toGMTString()), 2000);
  });
}

function wait2() {
    return new Promise((resolve, failure)=>{
    setTimeout(()=>{
        resolve('resolved ' + new Date().toGMTString());
    }, 2000);
  });
}

function wait3() {
    return new Promise((resolve, failure)=>{
    setTimeout(()=>{}, 2000);
  });
}

function wait4() {
    return new Promise((resolve, failure)=>{
    setTimeout(resolve(), 2000);
  });
}

async function test() {
  await wait0().then((result)=>console.log(result)); // Works as expected
  console.log(new Date().toGMTString());
    await wait1().then((result)=>console.log(result)); // Doesn't adhere to timeout
  console.log(new Date().toGMTString());
  await wait2().then((result)=>console.log(result)); // Works as expected
  console.log(new Date().toGMTString());
  await wait3().then((result)=>console.log(result)); // Never resolves
  console.log(new Date().toGMTString());
  await wait4().then((result)=>console.log(result)); // Doesn't adhere to timeout
  console.log(new Date().toGMTString());
}


test();
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!