还有比异步函数上的回调更简单的方法来暂停执行吗?

问题描述 投票:0回答:2

我有一个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
});
javascript asynchronous async-await callback google-cloud-functions
2个回答
0
投票

您可以将您的400行代码分成一个文件并导出一个函数,假设它名为handleFile。然后在您的回调函数中只需调用:

downloader(function(){
  var usefulthing = JSON.parse(file);
  handleFile(file)
});

0
投票
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
}
© www.soinside.com 2019 - 2024. All rights reserved.