Асинхронная и обещанная дилемма - PullRequest
0 голосов
/ 24 ноября 2018

Обе эти функции возвращают Обещание.Так в чем же разница между этими двумя подходами?Я не могу поверить, что это просто личные предпочтения.

function somePromise(){
   return new Promise((resolve, reject) => {
      resolve(':D');
   });
}


async function someAsync(){
   return ':D';
}

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Первая функция - это традиционная функция, которая вручную возвращает обещание, которое, в свою очередь, преобразуется в :D.

Вторая функция - это асинхронная функция (следовательно, асинхронная).Асинхронные функции возвращают обещания по умолчанию, поэтому они также возвращают обещание.

В целом, подходы очень похожи, за исключением того, что вы можете использовать await изнутри асинхронных функций, чтобы избежать вложения слишком большого количества обратных вызовов.Единственное предостережение от использования асинхронности - это то, что он не так широко поддерживается, как первый вариант.

0 голосов
/ 24 ноября 2018

Второй использует более современную языковую функцию, которая может быть недоступна во всех средах.Вот и все.

Конструктор new Promise все еще необходим для создания обещаний, когда у вас есть асинхронные функции, которые уже не возвращают обещания.И, конечно, в вашем конкретном примере вы создали обещание, которое немедленно разрешается с помощью синхронно полученного значения, поэтому вы могли бы написать return Promise.resolve(':D'); в качестве третьего варианта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...