我正在使用NodeJS开发一个应用程序,其中两个查询相互依赖,这是对我的情况的解释。
我必须查询数据库中的一些值,然后我必须查询 只有在数据库中有A时,才能使用其他值B的数据库。
我知道我可以用NodeJS的自然方式做到这一点,比如在结果准备就绪时执行A的查询,在A的回调中执行B的查询,最后在B的回调中呈现响应。
这是我的问题,我刚刚提到的解决方案中是否有关于嵌套回调的设计问题。
第二种方法是,我可以将NodeJs IO设置为阻止非阻塞吗?
答案 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 ++扩展来提供阻塞调用。