Ответ 1
JavaScript также является функциональным языком программирования. Здесь у вас есть функция "высшего порядка", функция, которая принимает функцию в качестве параметра. Функции более высокого порядка синхронны (но см. Примечание ниже).
Источники:
map()
является типичным примером функции более высокого порядка. Он принимает функцию и применяет ее ко всем элементам массива. Определение звучит очень "функционально". Эта функция также не предоставляется Node. Он документирован MDN Array.prototype.map() и указан ECMAScript 5,1.
Чтобы ответить на ваш вопрос: Да, doSomething(nodeIDs)
называется после. Все элементы были применены.
Примечание: Функция более высокого порядка представляет собой концепцию функционального программирования. JavaScript функциональный, но также глубоко уложен в практичности выполнения кода внутри браузера или на сервере. Я бы сказал, что, например,
setTimeout()
не является функцией более высокого порядка, даже если он принимает функцию как параметр, потому что setTimeout()
на самом деле не является чисто функциональным, поскольку использует время. Чистая функциональность безвременна. Например, результат map()
не зависит от времени. И это то, о чем этот вопрос действительно. Если что-то не зависит от времени, вы выполняете его синхронно. Проблема решена.
Спасибо Саймону за вызов определения функции более высокого порядка в JavaScript.