Подтвердить что ты не робот

Осветление стиля потолка Метеор

Документация Meteor утверждает:

В Meteor код вашего сервера работает в одном потоке для каждого запроса, а не в асинхронном обратном вызове, типичном для Node

Они на самом деле означают?

A) сервер выполняет несколько потоков параллельно (что кажется необычным в экосистеме Node.js)

или

B) По-прежнему существует только один поток внутри сервера, и каждый запрос обрабатывается последовательно, по крайней мере до тех пор, пока он не вызывает вызовы ресурсов за пределами сервера - например, хранилище данных, и в этот момент сам сервер обрабатывает обратные вызовы он обрабатывается другими запросами, поэтому вам не нужно писать/управлять обратными вызовами самостоятельно.

4b9b3361

Ответ 1

Брэд, ваш B правильный.

Meteor использует fibers внутренне. Как вы сказали, есть только один поток внутри события сервера, но когда вы делаете (например) чтение базы данных, Fibers дает и управление быстро возвращается к циклу событий. Таким образом, ваш код выглядит следующим образом:

doc = MyCollection.findOne(id);

(со скрытым "выходом в цикл событий, возвращайтесь, когда документ находится здесь" ), а не

MyCollection.findOne(id, function (err, doc) {
  if (err)
     handle(err);
  process(doc);
});

Обработка ошибок в версии волокна также просто использует стандартные исключения JavaScript вместо того, чтобы каждый раз проверять аргумент.

Я думаю, что это приводит к упрощению стиля кода для бизнес-логики, который хочет взять кучу действий, которые зависят друг от друга последовательно. Тем не менее, большинство синхронных API-интерфейсов Meteor, возможно, принимают обратные вызовы и становятся асинхронными, если вы хотите использовать асинхронный стиль.