All streams
Search
Write a publication
Pull to refresh
0
0

Пользователь

Send message
Глобальная переменная там все таки только для примера и наглядности того, как с fiberами легко создать себе race condition. В полностью синхронном коде race condition не бывает.
Просто fiberы это слишком очень гибкая вещь. Как я понимаю, можно изменить поведение функции, сделав ее асинхронной, при этом никак не изменяя ее вызовы, они будут также работать. Это конечно круто, но, мне кажется, все таки безопаснее, когда в самом вызове функции видно, что вызов этот асинхронный.
В случае с генераторами, как раз придется еще вносить изменения в вызывающие функции, что конечно раздражает, но такой код становится более явным и предсказуемым, а это плюс.
Короче, await в вызове async функции — это совсем не избыточная информация в синтаксисе, он нужен для того, чтобы прочитав код, мое представление о нем соответствовало тому, что он на самом деле делает:) А fiberы создают иллюзии ;)
Еще одно субъективное замечание: node-fibers — это все таки что-то из области черной магии), если сравнивать его с co (200+ срок на чистом js).
Написан он на С, код с использованием fibers тоже выглядит шаманством) В общем, это не просто js библиотека и это настораживает.
К тому же, fibers уже не станут мэйнстримом, так как node.js отчетливо движется в сторону async await. А наличие камьюнити в наше время решает.
Выходит, может возникнуть такая ситуация, когда будет не очевидно, что код, который вызывается глубоко внутри нескольких вложенных функций, на самом деле, выполняет что то асинхронно.
В концепции async await или co, поведение всегда очевидно.
Некоторые считают , что нетребовательность волокон к оборачиванию всех функций — это не безусловный позитив.
Почему fibers предпочтительней co?

Information

Rating
Does not participate
Registered
Activity