繁体   English   中英

Node.JS和同步数据库查询

[英]Node.JS and synchronous database queries

在node.js应用程序中,我需要执行以下操作:(当然,伪代码)

if(loadedData is empty){
    loadDatafromDatabase <<---- this one is async
}
useLoadedData

当然,从数据库加载数据是一个异步过程,因此useLoadedData尝试在加载完成之前使用数据。 在继续之前,是否有任何干净的方法来等待loadDataFromDatabase返回其结果?

我见过很多人提到回调是一种正确的解决方案,所以我很想做这样的事情:

if(loadedData is empty){
    loadDataFromDatabase( callback useLoadedData )
}else{
    useLoadedData
}

但是对我来说看起来很脏。 有更好的方法吗?

谢谢!

如果可以包含节点光纤,则可以尝试使用wait.for

https://github.com/luciotato/waitfor

var wait=require('wait.for');

function process(){
   if(!data){
       data = wait.for(loadDatafromDatabase); 
       // loadDatafromDatabase is *standard* async
       // wait.for will pause the fiber until callback
   }
   useLoadedData(data);
}

wait.launchFiber(process);

节点执行此操作的方式将如下所示:

db.query(queryString, callbackproc);

function callbackproc(resultSet) {
  // do both cases here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM