我有一个nodejs应用程序,我在其中下载了一个文件,该文件随后立即使用,程序的其余部分取决于所使用的文件,唯一的问题是,我必须通过Google Cloud下载文件的唯一功能是异步的,表示要在意识到文件没有完全下载时阻止程序立即崩溃,是要在我的异步函数上进行回调以进行下载。
通常,这很好,但是不幸的是,该程序的其余部分约为400 LINES LONG,这意味着400 LINE LONG的回调函数。很难理解。
[如果有人能告诉我比该回调函数更简单的暂停执行方法,我将不胜感激。
随时让我知道这是否是一个重复的问题,而这个确切的问题已经在其他地方回答了。我亲自搜寻了这个问题,但找不到它。
async function downloader(callback){
await download(file); //insert download function here
callback();
}
downloader(function(){
var usefulthing = JSON.parse(file);
//Insert 400 lines of code here
});
您可以将您的400行代码分成一个文件并导出一个函数,假设它名为handleFile
。然后在您的回调函数中只需调用:
downloader(function(){
var usefulthing = JSON.parse(file);
handleFile(file)
});
const Downloader=async()=>{
const file = await download(file)
// this now returns the file as a promise
return file
}
function MainStuff async(){
const file =await Downloader()
// the 400 lines of code now will wait this file to finish downloading
}