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