Действительно ли разрешить обещание в конструкторе обещаний? - PullRequest
0 голосов
/ 14 января 2019

Допустимо ли разрешить обещание в конструкторе, как это

var promise1 = new Promise(function(resolve, reject) {
    resolve('foo');
});

вместо разрешения после создания конструкции, как показано ниже

var promise1 = new Promise(function(resolve, reject) {
  setTimeout(function() {
    resolve('foo');
  }, 300);
});

1 Ответ

0 голосов
/ 14 января 2019

Да, вполне приемлемо разрешить новое Promise синхронно в конструкторе. IIRC, это даже контрольный пример из пакета проверки A + обещание .

Однако, если разрешение не условное, оно более четко достигается с помощью статического метода ES6 Promise `resolv:

var promise1 = Promise.resolve( 'foo');

Примечание , если выбрасываются ошибки, два подхода различаются:

  • Если исполнитель выдает ошибку, new Promise( executor) возвращает отклоненное обещание.
  • Если при вычислении аргумента для Promise.resolve выдается ошибка, исключение предотвращает выполнение вызова Promise.resolve.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...