У меня был свой собственный модуль со следующим кодом:
module.exports.PrintNearestStore = async function PrintNearestStore(session, lat, lon) {
...
}
Он работал нормально, если вызывать функцию вне моего модуля, однако, если я вызвал внутри, во время работы я получил ошибку:
(node: 24372) UnhandledPromiseRejectionWarning: Отказ от необработанного обещания (идентификатор отклонения: 1): ReferenceError: PrintNearestStore не определен
Когда я изменил синтаксис на:
module.exports.PrintNearestStore = PrintNearestStore;
var PrintNearestStore = async function(session, lat, lon) {
}
Он начал нормально работать внутри модуля, но выходит за пределы модуля - у меня ошибка:
(node: 32422) UnhandledPromiseRejectionWarning: Отказ от необработанного обещания (идентификатор отклонения: 1): TypeError: mymodule.PrintNearestStore не является функцией
Поэтому я изменил код на:
module.exports.PrintNearestStore = async function(session, lat, lon) {
await PrintNearestStore(session, lat, lon);
}
var PrintNearestStore = async function(session, lat, lon) {
...
}
И теперь он работает во всех случаях: внутри и снаружи. Однако хотите понять семантику и если есть более красивый и более короткий способ написать это? Как правильно определить и использовать функцию async как внутри, так и снаружи (экспорт) модуля?