Promise.resolve против решимости

1

Хей, у меня есть этот код:

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

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

});

И он разрешает обещание через секунду, а затем и console.warning "Сначала то!".

Но когда я меняю строку:

resolve('First response');

за

Promise.resolve('First response');

Это не сработает. Подумайте, почему?

Также попробовал

return Promise.resolve('First response');

Но это также не работает. Я не знаю почему.

Можете ли вы помочь мне понять это?

Теги:
promise

2 ответа

5
Лучший ответ

new Promise конструктор new Promise передает определенную функцию в ваш обратный вызов, который становится вашим параметром resolve. Это обещание (то, которое вы строите там с new Promise) может быть разрешено только путем вызова этой конкретной функции resolve.

Promise.resolve просто создает новое "предварительно разрешенное" обещание. Он не разрешает никаких существующих обещаний (и не имеет никакого способа узнать, какое обещание он должен решить).

  • 0
    О, дорогой, ты абсолютно прав! Большое спасибо!
0

Еще один способ думать об этом:

Разрешить === resolCallback === первый аргумент, предоставленный вашему обратному вызову Promise Promise.resolve === функция для возврата new Promise

Эти два функциональных эквивалента:

'const foo = Promise.resolve('First response').then( /* ... */ );'

'const bar = new Promise(function(resolveCallback, rejectCallback) {

resolCallback ("Первый ответ"); }).затем(/*... */);'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню