Node.JS和同步数据库查询
在node.js应用程序中,我需要做这样的事情:(当然伪代码)
if(loadedData is empty){ loadDatafromDatabase <<---- this one is async } useLoadedData
当然,从数据库加载数据是一个asynchronous过程,所以useLoadedData在加载完成之前尝试使用数据。 有什么干净的方法来等待loadDataFromDatabase返回它的结果吗?
我已经看到许多人提到callback是一个正确的解决scheme,所以我很想做这样的事情:
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 }