LINUX.ORG.RU

async function для addEventListener. Это легально?

 , , ,


0

1

Здравствуйте

Написал

window.addEventListener("load", async () => {
    await MAIN();
});
Хром и файрфокс отрабатывают. Но меня терзают смутные сомнения, что что-то здесь не так. Как считаете, легально ли передавать асинхронные функции в обычные калбэки?

★★★★★

Эм. А чего ты хочешь-то? Почему бы этому быть нелегальным?

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

/thread

ChALkeR ★★★★★ ()
Последнее исправление: ChALkeR (всего исправлений: 1)

Будут наверное предупреждения про Unhandled Promise Rejection, а так проблем нет.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

предупреждения про Unhandled Promise Rejection

Ага. Пока try..catch не добавишь - стек не показывает

makoven ★★★★★ ()
Ответ на: комментарий от makoven

Мэээ... ты перемудрил чота. try/catch проканает только внутри, а не снаружи. И со стектрейсом у генераторов овердохрена проблем. ХЗ, починили или нет.

Я писал про то, что если у тебя промис реджектится, и у этого нет хендлера, то всякие хромы и ноды по дефолту могут глобальные евенты о проёбе пулять. Соответственно, если ты вешает async как хендлер события, у него хвост в виде не контролируемого отказа провисает.

Но логически ни каких проблем с тем чтобы повесить async на событие нет. И это даже удобно.

Vit ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.