JavaScript es también un lenguaje de programación funcional. Lo que tienes aquí es una «función de orden superior», una función que toma una función como parámetro. Las funciones de orden superior son sincrónicas (pero vea la nota a continuación).
Fuentes:
map()
es un ejemplo típico de una función de orden superior. Toma una función y la aplica a todos los elementos de una matriz. La definición suena muy «funcional». Esta función tampoco es proporcionada por Node. Está documentado por MDN Array.prototype.map() y especificado por ECMAScript 5.1.
Para responder a su pregunta: Sí, doSomething(nodeIDs)
se llama después de todos los elementos se han aplicado.
Nota: La función de orden superior es un concepto de programación funcional. JavaScript es funcional, pero también está profundamente arraigado en la practicidad de ejecutar código dentro de un navegador o en el servidor. Diría que, por ejemplo,
setTimeout()
no es una función de orden superior, incluso si toma una función como parámetro porque
setTimeout()
no es realmente puramente funcional porque usa tiempo. La funcionalidad pura es intemporal. Por ejemplo, el resultado de
map()
no depende del tiempo. Y de eso se trata esta pregunta. Si algo no depende del tiempo, lo ejecuta sincrónicamente. Problema resuelto.
Gracias a Simon por desafiar la definición de la función de orden superior en JavaScript.
¿Qué es $ aquí? map toma una función de devolución de llamada para aplicar a cada miembro de la lista, no una devolución de llamada cuando se completa la iteración completa. – chovy
Gracias chovy.En cuanto a $, solo estaba experimentando con el módulo node-jquery y no me molesté en editarlo. – bonchef