Это просто соглашение.Обратите внимание, что код:
somecode.then((result) => {someothercode});
на самом деле:
somecode.then(myFunction);
Поскольку somecode
- это Promise, ваша функция может вызываться с нулевым или одним аргументом.Вы должны назвать этот аргумент:
function myFunction (foo) {
// use foo here
}
somecode.then(myFunction);
Конечно, в отличие от некоторых других языков, javascript не заставляет вас называть вашу функцию.Вы можете просто использовать безымянную (анонимную) функцию:
somecode.then(function(mango) { /* use mango here */ })
Стрелочные функции - это новый синтаксис, позволяющий писать анонимные функции в более коротком стиле (он также ведет себя немного по-разному в отношении объема и значенияthis
)
Express.js и http.Server
В библиотеке узла http.Server и платформе Express.js каждый запрос к серверу будет вызывать определенную вами функцию и передавать ей два аргумента:объект запроса и объект ответа.Переменные req
и res
- это просто соглашения, которые люди используют при написании своих собственных функций обработчика запросов.Вы можете назвать их как угодно.Например, вы можете вместо этого использовать request
и response
или rx
и tx
:
app.get('/say/hello', (rx, tx) => tx.send('Hello'));
Сколько аргументов я пишу с помощью функции обратного вызова ??
лучший способ узнать это прочитать документацию модуля, который вы используете.Это не только способ узнать - вы, конечно, можете прочитать исходный код.Но часто легче читать документацию.Из-за этого модули javascript имеют тенденцию иметь действительно хорошую документацию (в противном случае они были бы непригодны для использования и игнорировались бы сообществом).
Express.js фактически передаст три аргумента вашему обратному вызову (не два !!) - request
, response
и next
, где next
- это функция, которую вы можете вызвать, если хотите, чтобы Express продолжил обработку вместо ответа на запрос.Одна интересная особенность javascript - это то, что вам разрешено вызывать функции с меньшим или большим количеством аргументов, и это не считается синтаксической ошибкой:
function example (x) {}
example(); // not an error
example(1); // not an error
example(1,2,3,4); // also not an error
Express использует эту функцию, всегда вызывая ваш обратный вызов с тремя аргументами, одновременно позволяяобъявить обратный вызов только с двумя аргументами, если вам не нужен третий аргумент next
.