2012-08-02 11 views
19

estados de documentación de meteoros:Meteor estilo roscado de clarificación

En Meteor, su código de servidor se ejecuta en un solo hilo por solicitud, no en el estilo de devolución de llamada asincrónica típico de Nodo

¿Es que realmente significan ?

A) el servidor se ejecuta múltiples hilos en paralelo (que parece inusual dentro del ecosistema Node.js)

o

b) no existe todavía sólo un único hilo dentro de un servidor de evented y cada solicitud se procesa secuencialmente, al menos hasta que realiza llamadas a recursos fuera del servidor, como el almacén de datos, momento en el que el servidor maneja las devoluciones de llamada mientras procesa con otras solicitudes, por lo que no tiene que escribir/administrar las devoluciones de llamadas usted mismo .

Respuesta

12

Brad, su B es correcta.

Meteor utiliza fibers internamente. Como dijiste, solo hay un hilo dentro de un servidor con evented, pero cuando lo haces (por ejemplo) una lectura de base de datos, Fibras cede y el control vuelve rápidamente al bucle de evento. Por lo que su código es el siguiente:

doc = MyCollection.findOne(id); 

(con un oculto "ceda el paso al ciclo de eventos, volver cuando el doctor está aquí") en lugar de la manipulación

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

error en la versión de la fibra también acaba usa excepciones estándar de JavaScript en lugar de tener que verificar un argumento cada vez.

Creo que esto lleva a un estilo de código más fácil de leer para la lógica de negocios que quiere tomar un montón de acciones que dependen unas de otras en serie. Sin embargo, la mayoría de las API síncronas de Meteor toman opcionalmente devoluciones de llamada y se vuelven asíncronas, si desea utilizar el estilo asíncrono.

+3

La redacción de esto en los documentos Meteor realmente podría utilizar la aclaración. Esto suena como un muy buen enfoque que tomaron, pero la redacción me hizo preguntar qué es lo que realmente está sucediendo bajo el capó. –

+0

¿Hay algún plan para manejar la solicitud en hilos separados? – trusktr