1 year ago

#382121

test-img

user8897159

Why is this output reached?

Can anyone tell me why this code outputs the following? I am completely lost on async functions and close to just giving up.

The first await does what I expect and waits 1 second before executing. However, somehow 301 is outputted before the then before it is executed which seems to completely defy the literal definition of then. Done is outputted then somehow it goes back and executes the second then statement.

async function test() {

  const promise1 = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('foo');
      console.log('First await executed')
    }, 1000)
  }).then(() => {
    new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve('foo');
        console.log("This was executed")
      }, 1000)
    })
  }).then(() => Promise.resolve(301));

  console.log(promise1)

  await setTimeout(() => console.log(1000), 1000)

  console.log("Done");
}

test()

javascript

asynchronous

async-await

promise

es6-promise

0 Answers

Your Answer

Accepted video resources