阻止nodejs中的IO

时间:2014-03-04 07:45:25

标签: javascript node.js blocking nonblocking

我正在使用NodeJS开发一个应用程序,其中两个查询相互依赖,这是对我的情况的解释。

  

我必须查询数据库中的一些值,然后我必须查询   只有在数据库中有A时,才能使用其他值B的数据库。

我知道我可以用NodeJS的自然方式做到这一点,比如在结果准备就绪时执行A的查询,在A的回调中执行B的查询,最后在B的回调中呈现响应。

这是我的问题,我刚刚提到的解决方案中是否有关于嵌套回调的设计问题。

第二种方法是,我可以将NodeJs IO设置为阻止非阻塞吗?

2 个答案:

答案 0 :(得分:2)

我知道了一个名为Async的库,我希望在启动NodeJs项目时找到id。它可以解决这个问题以及更多。

  

Async提供大约20种功能,包括通常的“功能”   怀疑(map,reduce,filter,each ...)以及一些常见的模式   用于异步控制流程(并行,系列,瀑布......)。所有   这些函数假设您遵循提供的node.js约定   单个回调作为异步函数的最后一个参数。

来自网站的基本示例,可以帮助您的方案

async.series([
    function(callback){
        // do db call one
        callback(null, 'one');
    },
    function(callback){
        // do db call two
        callback(null, 'two');
    }
],
function(err, results){
    // results is now equal to ['one', 'two']
}); 

答案 1 :(得分:1)

  

这是我的问题,我刚刚提到的解决方案中是否有关于嵌套回调的设计问题。

不,你的解决方案非常好。

  

第二种方法是,我可以将NodeJs IO设置为阻止非阻塞吗?

是。您可以编写自己的c ++扩展来提供阻塞调用。