Возврат из асинхронной функции - PullRequest
0 голосов
/ 19 июня 2019

Интересно, обязательно ли возвращаться из асинхронной функции, например:

async function foo() {
  return bar(); // bar returns a promise
}

или я могу просто сделать

async function foo() {
  bar();
}

потому что async автоматически возвращает обещание, но я должен вернуть исходное обещание, а не новое, автоматически созданное async?

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Это зависит от того, хотите ли вы передать значение следующему обещанию в цепочке.Обычно рекомендуется возвращать значение обещанию, если только оно не является последней функцией в цепочке или если нет информации для передачи (по какой-то причине).

Если единственная причина bar() вызывается потому, что это вызывает некоторый побочный эффект вне функции (изменяет глобальную переменную, обновляет БД и т. д.), я полагаю, вы не могли вернуться.Но даже тогда я все равно вернул бы значение для успеха, особенно если бы bar() выполнил ввод / вывод.

function bar(){
  return 'hello world';
}

async function foo1() {
  bar(); // Returns a promise with an empty value
}

async function foo2() {
  return bar(); // returns a promise with the _value_ returned from bar()
}

foo1().then(console.log); // undefined
foo2().then(console.log); // 'Hello World'

0 голосов
/ 19 июня 2019

Асинхронная функция гарантированно возвращает Promise, но когда это Promise устанавливается и то, что оно доставляет, определяется тем, что возвращает функция.

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