JavaScript ist auch eine funktionale Programmiersprache. Was Sie hier haben, ist eine «Funktion höherer Ordnung», eine Funktion, die eine Funktion als Parameter übernimmt. Funktionen höherer Ordnung sind synchron (siehe Hinweis unten).
Quellen:
map()
ist ein typisches Beispiel für eine Funktion höherer Ordnung. Es nimmt eine Funktion und wendet sie auf alle Elemente eines Arrays an. Die Definition klingt sehr "funktional". Diese Funktion wird auch nicht von Node bereitgestellt. Es ist dokumentiert durch MDN Array.prototype.map() und spezifiziert durch ECMAScript 5.1.
Um Ihre Frage zu beantworten: Ja, doSomething(nodeIDs)
heißt nach alle Elemente wurden angewendet.
Hinweis: Die Funktion höherer Ordnung ist ein Konzept der funktionalen Programmierung. JavaScript ist funktional, aber auch tief in der praktischen Ausführung von Code in einem Browser oder auf dem Server verankert. Ich würde sagen, dass zum Beispiel
setTimeout()
keine Funktion höherer Ordnung ist, auch wenn es eine Funktion als Parameter braucht, weil
setTimeout()
nicht wirklich rein funktional ist, weil es Zeit verwendet. Pure Funktionalität ist zeitlos. Zum Beispiel hängt das Ergebnis von
map()
nicht von der Zeit ab. Und genau darum geht es in dieser Frage. Wenn etwas nicht von der Zeit abhängt, führen Sie es synchron aus. Problem gelöst.
Dank Simon für die Herausforderung der Definition der Funktion höherer Ordnung in JavaScript.
Was ist $ hier? map verwendet eine Rückruffunktion, die auf jedes Mitglied der Liste angewendet wird, und keine Rückruffunktion, wenn die vollständige Iteration abgeschlossen ist. – chovy
Danke Chovy.Was das $ betrifft, habe ich gerade mit dem Node-Jquery-Modul experimentiert und bin nicht daran gegangen, das zu bearbeiten. – bonchef