Skip to content
Advertisement

Promise.resolve vs resolve

I have this code:

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(() => {
         console.warn('Elo');
         resolve('First response');
      },
      1000);
})

promise1
.then((resp) => {
    console.warn('First then!');
    
});

And It resolves promise after one second going to then and console.warning ‘First then!’.

But when I change line:

resolve('First response');

for

Promise.resolve('First response');

It won’t work. Some idea why ?

Also tried

return Promise.resolve('First response');

But it also doesn’t work. I don’t know why.

Can you help me understand it?

Advertisement

Answer

The new Promise constructor passes a specific function into your callback, which becomes your resolve parameter. That promise (the one you’re constructing there with new Promise) can only be resolved by calling that specific resolve function.

Promise.resolve simply creates a new “pre-resolved” promise. It does not resolve any existing promise (nor would it have any way of knowing which promise it’s supposed to resolve).

Advertisement