Ответ 1
Брэд, ваш B правильный.
Meteor использует fibers внутренне. Как вы сказали, есть только один поток внутри события сервера, но когда вы делаете (например) чтение базы данных, Fibers дает и управление быстро возвращается к циклу событий. Таким образом, ваш код выглядит следующим образом:
doc = MyCollection.findOne(id);
(со скрытым "выходом в цикл событий, возвращайтесь, когда документ находится здесь" ), а не
MyCollection.findOne(id, function (err, doc) {
if (err)
handle(err);
process(doc);
});
Обработка ошибок в версии волокна также просто использует стандартные исключения JavaScript вместо того, чтобы каждый раз проверять аргумент.
Я думаю, что это приводит к упрощению стиля кода для бизнес-логики, который хочет взять кучу действий, которые зависят друг от друга последовательно. Тем не менее, большинство синхронных API-интерфейсов Meteor, возможно, принимают обратные вызовы и становятся асинхронными, если вы хотите использовать асинхронный стиль.