В документации некоторых библиотек/фреймворков говорится, что вы можете использовать синхронную или асинхронную функцию.
Например, в документации Mongoose говорится:
Пользовательские валидаторы также могут быть асинхронными. Если ваша функция проверки принимает 2 аргумента, mongoose будет считать, что 2-й аргумент является обратным вызовом.
Итак, в основном, когда вы определяете такую функцию:
function(a){
return false;
}
Mongoose будет считать его синхронным, но мы определяем его так:
function(a,callback){
setTimeout(function(){
callback(false);
},5000)
}
Он будет воспринят как асинхронный код.
Я заметил то же самое с средой тестирования Mocha, в документации говорится:
Тестирование асинхронного кода с Mocha не может быть проще! Просто вызовите обратный вызов, когда ваш тест будет завершен. Добавив обратный вызов (обычно называемый done) в it(), Mocha будет знать, что он должен дождаться вызова этой функции для завершения теста.
Мой вопрос: Как они это делают? Как узнать при вызове функции, принимает ли она 1 или 2 аргумента?