Ваш первый блок кода принимает обратный вызов. Второй аргумент должен быть функцией. Эта функция будет вызываться после выполнения асинхронного кода.
Ваш второй блок кода вызывает функцию в первом. Второй аргумент, который вы передаете, является функцией. Пока все хорошо.
Внутри этой функции вы пытаетесь вызвать callback
. Это терпит неудачу, потому что нет никакой переменной с этим именем в области видимости.
На данный момент очень неясно, что вы пытаетесь сделать. Функция, которую вы передаете , является обратным вызовом. Вы должны использовать это, чтобы сделать что-то полезное с данными, которые передаются кодом из первого блока кода.
Теперь вы могли бы получить ссылку на функцию обратного вызова, используя выражение именованной функции:
getAudioInfo(filePath, function callback (err, info) {
if (err) {
callback(err);
}
//operations on info
callback(null, metadata_json);
});//end getAudioInfo
… но тогда вы просто называете это рекурсивно и бесконечно, что бесполезно.
re Edit:
Вы добавили вторую переменную с именем callback
:
function checkAudioInfo(metadata_json, callback) {
Это имеет больше смысла.
Если , что callback
не определено, то это потому, что вы не передаете ему значение, когда звоните checkAudioInfo
. Вы не включили этот код.