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);