Если вы хотите использовать функцию async
, вы должны преобразовать ваши обратные вызовы в Обещание и await
, что Обещание, чтобы получить желаемое значение. Обратите внимание, что нет необходимости переназначать (или использовать) внешнюю переменную encode
:
async function GenerazioneRapportino() {
console.log("Model: sono dentor model");
process.chdir('./Model');
const result = await new Promise((resolve, reject) => {
exec('ruby report.rb prova prova2 prova3', function(err, stdout, stderr) {
if (stderr) {
console.log("Errore generazione rapportino: ", err);
reject(false);
} else {
console.log("File Generator Correttamente: ", stdout);
base64.encode('rapportino.pdf', function(err, base64String) {
process.chdir('../');
console.log("Process dir ", process.cwd());
resolve(base64String);
});
}
});
});
console.log("Model: Ritorno encode");
return result;
}
Обратите внимание, что использование await
внутри async
функций приведет к возникновению ошибок при отклонении обещания - убедитесь, что потребитель GenerazioneRapportino
вызывает функцию в блоке try
.