Есть ли неявное возвращаемое значение для асинхронных функций - PullRequest
0 голосов
/ 26 января 2019

Эти два фрагмента одинаковы?

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

Когда я смотрю, как babel переводит их, он заменяет async / await на генераторы, которые делают его похожим на iдолжен возвращать постоянную информацию

// t.get() is a promise, set and delete are not

db.runTransaction(t => {
  return t.get(infoRef).then(info => {
    t.set(db.doc(`/users/${uid}`), info.data());
    t.delete(infoRef);
  });
});

db.runTransaction(async t => {
  const info = await info.get(infoRef)
  t.set(db.doc(`/users/${uid}`), info.data());
  t.delete(infoRef);
});

Babel Link

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Неявного возврата нет, но любое возвращаемое значение заключено в обещание.

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

Асинхронные функции неявно возвращают обещание.

Возвращение значения из одного обещания передает это значение в качестве аргумента следующему, если обещание связано .

Если после первого обещания вы ничего не связываете, возвращаемое значение игнорируется, и нет смысла его включать.

...