Node.js – 请求数据库和延迟

我有Node.js上的应用程序,由两个文件组成。 第一个文件包含构造if(..) { ... } else { ... }函数,第二个文件包含函数,其结果是if()中的参数并包含对数据库的请求。 例:

File_1(部分)

 var args = require('./File_2'); if(args.test() && args.example()) { //action } else { //action } 

File_2(部分)

 function test() { mysql.query('SELECT * FROM `table` WHERE `name` = "test"', function(err, rows) { if(rows.length == 0) { return false; } else { return true; } } } function example() { mysql.query('SELECT * FROM `table` WHERE `name` = "example"', function(err, rows) { if(rows.length == 0) { return false; } else { return true; } } } exports.test = test; exports.example = example; 

请求来了一段时间后,所以在if()参数等于undefined, undefined 。 如何使if/else施工等待请求结果? 我有两个想法 – 承诺和模块async 。 我认为async – 错误的决定。 在这种情况下如何使用promise? 哪种解决scheme更可取? 我会很高兴任何答案。

(对不起英文不好)

asynchronous是一个非常棒的库,但在节点中,您将使用callback(而不是返回)。 这里是一个例子:

 var async = require('async') function test(callback){ //simulate one async method call setTimeout(function(){ callback(null, "test_finished") },100) } function example(callback){ //simulate another async method call setTimeout(function(){ callback(null, "example finished") },500) } function compare(err, results){ //results will maintain order of array in parallel console.log(results[0], results[1]); } async.parallel([ example, test ], compare);