2011-03-21 32 views
108

Veo mucho uso next en node.js.javascript node.js siguiente()

¿De qué se trata, de dónde viene? ¿Qué hace? ¿Puedo usarlo del lado del cliente?

En este momento se utiliza, por ejemplo, aquí: http://dailyjs.com/2010/12/06/node-tutorial-5/

aspecto de la función loadUser.

+0

No he visto esto en ninguna parte, y no se menciona en ninguna parte de la documentación. ¿Estás seguro de que no está definido en algún lugar de la base de códigos que estás viendo? –

+0

Eso es demasiado vago. ¿Puedes dar un ejemplo de contexto? – Raynos

Respuesta

88

Esto parece ser una convención de nomenclatura variable en el código de flujo de control Node.js, donde una referencia a la siguiente función para ejecutar se le asigna a una devolución de llamada para que comience cuando esté listo.

Véase, por ejemplo, los ejemplos de código aquí:

Veamos el ejemplo informados:

function loadUser(req, res, next) { 
    if (req.session.user_id) { 
    User.findById(req.session.user_id, function(user) { 
     if (user) { 
     req.currentUser = user; 
     return next(); 
     } else { 
     res.redirect('/sessions/new'); 
     } 
    }); 
    } else { 
    res.redirect('/sessions/new'); 
    } 
} 

app.get('/documents.:format?', loadUser, function(req, res) { 
    // ... 
}); 

La función loadUser espera una función en su tercer argumento, que está ligado al nombre next. Este es un parámetro de función normal. Tiene una referencia a la siguiente acción a realizar y se llama una vez que se realiza loadUser (a menos que no se haya podido encontrar a un usuario).

No hay nada de especial en el nombre next en este ejemplo; podríamos haberlo llamado cualquier cosa.

+0

Esto también se usa bastante en express.js pero no es '.next()'. Parece preguntar sobre 'next' como un método en un objeto. – Raynos

+1

Es mejor usar 'return next();' –

+2

@RyanWalton Acepto –

31

Es una convención de nomenclatura utilizada al pasar devoluciones de llamada en situaciones que requieren la ejecución en serie de acciones, p. escanear directorio -> leer datos de archivo -> hacer algo con datos. Esto es preferible a anidar profundamente las devoluciones de llamada. Las tres primeras secciones del siguiente artículo en el blog de Tim Caswell HowToNode dan una buena visión general de lo siguiente:

http://howtonode.org/control-flow

Véase también la acciones secuenciales sección de la segunda parte de esta publicación:

http://howtonode.org/control-flow-part-ii

+1

Muchas gracias por estos enlaces. Explica muchas cosas cuando se comienza a trabajar con nodejs –

+0

El enlace no funciona ahora. Da error interno del servidor – Deep

+0

Enlaces actualizados del archivo de Internet –

Cuestiones relacionadas