3

I have this code:

setTimeout(function timeout() {
    console.log('timeout');
}, 0);

let p = new Promise(function(resolve, reject) {
    console.log('create promise');
    resolve();
});

p.then(function(){
    console.log('execute promise');
});

console.log('end');

I get this order when execute the code:

  • create promise
  • end
  • execute promise
  • timeout


Question: Why create promise is executed first? I expect to execute first end, because it is the only one synchrone code so it should be first executed.

Asking
  • 3,487
  • 11
  • 51
  • 106

1 Answers1

1

The callback passed to the Promise constructor is executed immediately and synchronously. But it is possible to start an asynchronous task in a Promise callback. Then the Promise resolves after the asynchronous task has completed. This is the primary use-case of Promises.

In your case there is no asynchronous task started, so all your cody is synchronous.

wuarmin
  • 3,274
  • 3
  • 18
  • 31