Nodejs - 异步/等待 - 没有等待的嵌套异步调用仍然阻塞?

问题描述

我希望 datafx 中的 saveData() 调用不会阻塞任何东西,因为没有“等待”但是当我检查日志和时间戳时,我注意到“主要完成”日志被延迟,即使“检索数据”不是.

async function mainCaller(){
  // do something and then trigger call to get data
  let id = 13;
  let data = await datafx( id );  <-- this gets blocked for saveData() - why?
  LOG( `main done` );
}

async function datafx( id ){
  // get data
  let data = await getData( id );
  // cleanup data
  // save data but don't wait for it
    // datafx does not wait for it as expected
    // however,mainCaller() is somehow "delayed" by it based on log timestamps
  saveData(id,data );
  LOG( `retrieved data` );
  return data;
}

async function getData(id){ return await dbRead(id); }
async function saveData(id,data){ return await dbSave(id,data); }
  1. mainCaller() 中的“await”是否正在等待所有异步调用,包括嵌套调用?
  2. 正确吗?
  3. 是否有更好的方法来实现嵌套异步调用以避免调用方的延迟?
  4. 我可以确认“saveData()”调用在我删除它时正在产生影响,并且我看到 mainCaller 在 datafx 返回后立即继续运行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)