问题描述
我希望 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); }
- mainCaller() 中的“await”是否正在等待所有异步调用,包括嵌套调用?
- 正确吗?
- 是否有更好的方法来实现嵌套异步调用以避免调用方的延迟?
- 我可以确认“saveData()”调用在我删除它时正在产生影响,并且我看到 mainCaller 在 datafx 返回后立即继续运行。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)