Как создать именованную асинхронную стрелочную функцию?

В настоящее время у меня есть этот код:

async function getConnection(){
    // logic here...
}

Чтобы сделать его совместимым с остальной частью моей кодовой базы, я хочу изменить его на функцию стрелки. Я пробовал async getConnection () => { ... }, но это не сработало. Как правильно это сделать?


person ifvictr    schedule 07.08.2017    source источник


Ответы (3)


У стрелочных функций нет имени, но вы можете присвоить их переменной следующим образом:

const normalFunc = () => { ... };
const asyncFunc  = async () => { ... };

Обратите внимание, однако, что стрелочные функции — это не просто более короткие обозначения для обычных функций, так как есть некоторые тонкие различия, о которых следует знать (подробнее см. в этой статье). Однако, если вы понимаете эти различия и они не влияют на ваш код, все должно быть в порядке.

person Frxstrem    schedule 07.08.2017

Стрелочные функции не могут иметь имени

const getConnection = async () => {}

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

person wookieb    schedule 07.08.2017
comment
Основная из них заключается в том, что асинхронные стрелочные функции не переносят контекст из конструкции, this относится к Window. - person Crowes; 07.08.2017
comment
@Crowes Я думаю, чтобы быть более ясным, this будет ссылаться на this любой функции или объекта, в котором была объявлена ​​функция стрелки. Я предполагаю, что const будет объявлен в глобальной области, так что вы правы - person Brett Reinhard; 08.08.2017
comment
@BrettReinhard Взгляните на это: stackoverflow.com/questions/22939130/ - person Crowes; 08.08.2017

Стрелочная функция не может быть объявлена ​​с именем, но может быть назначена.

Попробуйте:

var getConnection = async () => {
  return 'It works';
}

getConnection().then(message => console.log(message))

Надеюсь это поможет

person KpTheConstructor    schedule 07.08.2017